6
1
この記事誰得? 私しか得しないニッチな技術で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

【Rails】bundle installでGemのインストールはしているのにコンテナやEB環境で認識されない時の対処法

Last updated at Posted at 2024-07-03

どうもこんにちは。

今回は、タイトルに記載した件について対処したので備忘録として記事にします。

環境

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>'

sasscgemのバージョン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コマンドを実行した時に、ネイティブのmysql2gemが消えてしまったことが原因でした。

なので、gem install mysql2を実行します。

これで万事解決です!

以上

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1