Applicationサーバのプラットフォームバージョン上げたところアプリケーションが消失


【自分用メモ】StagingのApplicationサーバをバージョン上げたところアプリケーションが消失。
以下その対処。

状況

  • 以前、Spree導入時にRubyとRailsのバージョンを上げたが、その際にStagingサーバのアプリケーションサーバのバージョンを固定
  • 時間が経つにつれてプラットフォームのバージョンを上げるの推奨というアラートが出るようになったので言われるがままにバージョンUP
  • 再構築が走る。そのままサーバが動作不良。サーバの/var/app/currentにあったソースも消失。
  • EBのログ機能も作動せず
  • .elasticbeanstalkに記載していたプラットフォームを削除したが変わらず

対処

  • 画像にある「原因」の先にログを見る機能があり、その内容を見てRubyのバージョンがアプリケーションサーバが2.5.7となっているのに対し、現行が2.5.0ということが問題ということがわかった
  • 加えてgitがインストールされて無くてエラーになっていることも判明。yumでインストール。
  • このためローカル環境にRuby2.5.7をrbenvでインストール
  • rbenv local 2.5.7 でバージョン変更
  • ソースをEBにPUSH→EBは回復
  • ローカル環境がRubyバージョンUPで動作不良
  • RubyバージョンDOWN(2.5.0)
  • rails s でGemのエラーが多発
polyglot.rb:65:in `require': incompatible library version nio4r_ext.bundle (LoadError)

的なエラーになった。

  • bundle update error-gemnamegem pristine nio4r で各Gemを復旧しながら rails s で起動確認 すると
polyglot.rb:65:in `require': incompatible library version - /admin-vegewel/vendor/bundle/ruby/2.5.0/gems/nio4r-2.5.2/lib/nio4r_ext.bundle (LoadError)

から全く何しても変わらない状態に

  • ここでbundleでの改修を諦め、Gemfile.lockをいじってバージョンを明示的に2.5.2→2.5.0に変更
  • bundle実行でダウングレードに成功。再度rails s起動 →めでたく環境復活