どうもこんにちは。
今回は、タイトルに記載した件について対処したので備忘録として記事にします。
環境
Ruby 3.2.2
Rails 7.1.3.3
EB環境 Ruby 3.2 running on 64bit Amazon Linux 2023/4.0.7
どんなエラーが出ていた?
エラーログをそのまま貼り付けてしまいますが、Could not find sassc-2.1.0 in locally installed gems (Bundler::GemNotFound)
という部分でどんなエラーかが確認できます。
bundler: failed to load command: rake (/var/app/staging/vendor/bundle/ruby/3.2.0/bin/rake)
/usr/share/ruby3.2-gems/gems/bundler-2.4.10/lib/bundler/definition.rb:524:in `materialize': Could not find sassc-2.1.0 in locally installed gems (Bundler::GemNotFound)
from /usr/share/ruby3.2-gems/gems/bundler-2.4.10/lib/bundler/definition.rb:197:in `specs'
from /usr/share/ruby3.2-gems/gems/bundler-2.4.10/lib/bundler/definition.rb:254:in `specs_for'
from /usr/share/ruby3.2-gems/gems/bundler-2.4.10/lib/bundler/runtime.rb:18:in `setup'
from /usr/share/ruby3.2-gems/gems/bundler-2.4.10/lib/bundler.rb:171:in `setup'
from /usr/share/ruby3.2-gems/gems/bundler-2.4.10/lib/bundler/setup.rb:23:in `block in <top (required)>'
from /usr/share/ruby3.2-gems/gems/bundler-2.4.10/lib/bundler/ui/shell.rb:159:in `with_level'
from /usr/share/ruby3.2-gems/gems/bundler-2.4.10/lib/bundler/ui/shell.rb:111:in `silence'
from /usr/share/ruby3.2-gems/gems/bundler-2.4.10/lib/bundler/setup.rb:23:in `<top (required)>'
from /usr/share/ruby3.2-gems/gems/bundler-2.4.10/lib/bundler/cli/exec.rb:56:in `require_relative'
from /usr/share/ruby3.2-gems/gems/bundler-2.4.10/lib/bundler/cli/exec.rb:56:in `kernel_load'
from /usr/share/ruby3.2-gems/gems/bundler-2.4.10/lib/bundler/cli/exec.rb:23:in `run'
from /usr/share/ruby3.2-gems/gems/bundler-2.4.10/lib/bundler/cli.rb:492:in `exec'
from /usr/share/ruby3.2-gems/gems/bundler-2.4.10/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
from /usr/share/ruby3.2-gems/gems/bundler-2.4.10/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
from /usr/share/ruby3.2-gems/gems/bundler-2.4.10/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
from /usr/share/ruby3.2-gems/gems/bundler-2.4.10/lib/bundler/cli.rb:34:in `dispatch'
from /usr/share/ruby3.2-gems/gems/bundler-2.4.10/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
from /usr/share/ruby3.2-gems/gems/bundler-2.4.10/lib/bundler/cli.rb:28:in `start'
from /usr/share/ruby3.2-gems/gems/bundler-2.4.10/libexec/bundle:45:in `block in <top (required)>'
from /usr/share/ruby3.2-gems/gems/bundler-2.4.10/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
from /usr/share/ruby3.2-gems/gems/bundler-2.4.10/libexec/bundle:33:in `<top (required)>'
from /bin/bundle:25:in `load'
from /bin/bundle:25:in `<main>'
sassc
gemのバージョン2.1.0が見つからないと言われていますね。
でも、Gemfile.lock
には、ちゃんと入ってるんですよね。
sassc (2.1.0-x86_64-linux)
ffi (~> 1.9)
sassc-rails (2.1.2)
railties (>= 4.0.0)
sassc (>= 2.0)
sprockets (> 3.0)
sprockets-rails
tilt
解決するまでに試したこと
EB環境の再構築
困った時は、EB環境の再構築をして、ごちゃごちゃ設定をリセットできるのですが、これでは解決しませんでした。
sasscのバージョン変更
sassc
をバージョン2.4.0にしたり、2.2.0にしたりしてみましたが、LoadError
が出てしまうんですよね。
解決策
自分がやった対応としては、以下のコマンドを実行していくことです。
$ eb ssh
$ sudo su
$ cd /var/app/current
$ gem clean
$ gem install bundler
$ bundle install
一度、Gemを綺麗にしてから、bundler
や他のGemを再度インストールします。
ただ、このままだと以下のようなエラーが出てくることがあります。
/var/app/current/vendor/bundle/ruby/3.2.0/gems/mysql2-0.5.6/lib/mysql2/client.rb:97:in `connect': Unknown MySQL server host 'db' (-2) (Mysql2::Error::ConnectionError)
DBに接続できない...
database.ymlの設定は間違っていないし...
これは、gem clean
コマンドを実行した時に、ネイティブのmysql2
gemが消えてしまったことが原因でした。
なので、gem install mysql2
を実行します。
これで万事解決です!
以上