ibuki1124
@ibuki1124

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

EC2でのデプロイをした後に修正したコードを再度デプロイする際に発生したエラー

解決したいこと

AWSのCloud9上でRailsアプリケーション作成し、EC2を使いデプロイをしたのですが修正箇所があり、修正した後に最新のコードを反映させようとしたところ反映できておらず以下のようなエラーが発生していました。

発生している問題・エラー

(Cloud9のターミナルでEC2インスタンスに接続した状態です)

[ec2-user@ip-*-*-*-* アプリ名]$ bundle exec rails db:migrate RAILS_ENV=production
/home/ec2-user/アプリ名/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.8.1/lib/sinatra/base.rb:902: warning: constant Tilt::Cache is deprecated
warning: constant Tilt::Cache is deprecated

とエラーが発生しているのですがどう対処したら良いのかわかりません...

railsのバージョンは2.5.2で開発を行ったのですが、EC2インスタンスに接続した状態のターミナルでバージョンを確認したところ

[ec2-user@ip-*-*-*-* アプリ名]$ rails -v
Rails 5.2.8.1

と開発を行ったrailsのバージョンとは異なるバージョンになっていました。
これが関係しているわけではないかもしれませんが、一応記載しておきます。

実際に反映できていないコードはこちらのCSSです。
フォームエラーでのレイアウト崩れを防ぐために記載したコードです。

.field_with_errors {
  display: inline-block;
  flex-grow: 1;
  input, textarea {
    @extend .is-invalid;
  }
}

レイアウトが崩れいている状態です。

スクリーンショット 2024-04-02 061139.png

上記のCSSが反映できた際にはこのように表示されます

スクリーンショット 2024-04-02 061245.png

自分で試したこと

GitHubには最新の状態のコードをpushしてあることを確認しております。

一度デプロイしたコードを最新の状態に更新するためにはEC2インスタンスに接続した状態でアプリのディレクトリに移動し

git pull
bundle exec rails db:migrate RAILS_ENV=production
sudo systemctl restart nginx

の順に実行していくと最新の状態にすることができると学習時に参考にしていた教材に記載されていたのですが上記2番目に実行したコードでエラーが発生していたためそれが原因なのではないかと考えております。

自分自身あまり詳しく理解できておらず、なぜ最新の状態にすることができないのかわからない状況であるため大変困惑しております....

AWS・Railsともに学習中でわからないことが多いため教えていただければ幸いです。

また、Qiitaを使い質問させていただくことも初めてであるため、見にくい・わかりずらい箇所が多々あるかもしれませんが、ご容赦ください。

何卒よろしくお願いいたします。

0

1Answer

[ec2-user@ip-*-*-*-* アプリ名]$ bundle exec rails db:migrate RAILS_ENV=production
/home/ec2-user/アプリ名/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.8.1/lib/sinatra/base.rb:902: warning: constant Tilt::Cache is deprecated
こちらはインストールされているライブラリ「sinatra-2.0.8.1」のbase.rb(902)行目に記載された Tilt::Cacheが非推奨であることを示しております。 (※ライブラリの問題なので、ibuki1124さんの記載したソースコードや対応には問題ございません。)

■[実際にエラーとなっているライブラリのコード]: sinatra/sinatra - base.rb (899行目〜)
 https://github.com/sinatra/sinatra/blob/v2.0.8.1/lib/sinatra/base.rb


   def initialize(app = nil)
      super()
      @app = app
      @template_cache = Tilt::Cache.new # エラーとなった箇所
      yield self if block_given?
    end

解決方法について、本エラーは以下に記載された通り、sinatraのバージョン3.1.0以降では
解消されているもののようですので、
sinatraのバージョンを上げるのが良いかと思います。

3.1.0 / 2023-08-07
...
Fix: Remove use of Tilt::Cache #1922 by Jeremy Evans (allows use of Tilt 2.2.0 without deprecation warning)
https://github.com/sinatra/sinatra/blob/main/CHANGELOG.md#310--2023-08-07

1Like

Comments

  1. @ibuki1124

    Questioner

    mofumofuUncleさん
    ご回答ありがとうございます!
    現在、バージョンアップの方法を模索していたのですが、お恥ずかしながら方法がわかりません...。

    試してみたこととしては、最初は

    [ec2-user@ip-*-*-*-* アプリ名]$ vi vendor/bundle/ruby/2.6.0/gems
    

    でViエディタを使いgemファイルを変更し、bundle installを行えばいいのかと考え実行しようとしたのですが、gemsディレクトリにはインストールされたライブラリのディレクトリがあるだけで変更できませんでした。

    そのため、次に、

    [ec2-user@ip-*-*-*-* アプリ名]$ vi Gemfile
    

    でgemファイルを開くことができたため、直接編集しバージョンアップできるのではないかと考えsinatraに関係する記載を探してみたところ、sinatraをインストールしているgemが見つからなかったため断念しました。

    どのようにバージョンアップしたら良いのかよろしければお教えいただけないでしょうか💦

Your answer might help someone💌