※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。
Herokuにデプロイするとエラーが起こる
前回、スタックのバージョン変更後、新たなエラーが発生
備忘録としてエラー解消方法を残しておく
ruby 2.7.7
Rails 6.0.6.1
MacOS sonoma14.5
エラー内容
Deploy Branchした際におきたエラー
-----> Building on the Heroku-20 stack
-----> Determining which buildpack to use for this app
! Warning: Multiple default buildpacks reported the ability to handle this app. The first buildpack in the list below will be used.
Detected buildpacks: Ruby,Node.js
See https://devcenter.heroku.com/articles/buildpacks#buildpack-detect-order
-----> Ruby app detected
-----> Installing bundler 2.3.25
-----> Removing BUNDLED WITH version in the Gemfile.lock
-----> Compiling Ruby/Rails
-----> Using Ruby version: ruby-2.7.7
-----> Installing dependencies using bundler 2.3.25
Running: BUNDLE_WITHOUT='development:test' BUNDLE_PATH=vendor/bundle BUNDLE_BIN=vendor/bundle/bin BUNDLE_DEPLOYMENT=1 bundle install -j4
Fetching gem metadata from https://rubygems.org/.........
ffi-1.17.0-x86_64-linux requires rubygems version >= 3.3.22, which is
incompatible with the current version, 3.1.6
Bundler Output: Fetching gem metadata from https://rubygems.org/.........
ffi-1.17.0-x86_64-linux requires rubygems version >= 3.3.22, which is
incompatible with the current version, 3.1.6
!
! Failed to install gems via Bundler.
!
! Push rejected, failed to compile Ruby app.
! Push failed
前回Heroku-20に変更したところは解決できているが、別のエラーが発生
chatGPTで翻訳すると
「ffi-1.17.0-x86_64-linuxはrubygemsバージョン3.3.22以上を必要としますが、現在のバージョンは3.1.6です」とのこと
(このエラーの解消に四苦八苦しました)
Gemfileを見ても「rubygems」は書かれていない、けどたしかに「3.1.6」らしい
gem --version
# => 3.1.6
chatGPT先生に聞くと、Gemfileでバージョンを指定するものでもないらしい ↓
rubyのバージョンを変えず、Gemfileに書かずにrubygemsのバージョンのみ上げる方法を探す
ターミナル画面でrubygemsのバージョンを上げる
gem install rubygems-update -v 3.3.22
gem --version
# => 3.3.22
しかしこのままだとGitでは変更がないので、デプロイしても「現在のバージョンは3.1.6です」のまま
※このあと、以下のコマンドを実行するとコミットできるファイルが生まれることを知る
git add Gemfile Gemfile.lock
でもデプロイ結果は変わらず、「現在のバージョンは3.1.6です」のまま
コミットするため、VScodeを変更したい
ということで、Gemfileに書いて反映をさせてみる
gem 'rubygems-update', '3.3.22'
bundle update --ruby
gem --version
# => 3.3.22
でもデプロイ結果は変わらず、「現在のバージョンは3.1.6です」のまま
デイトラでチャット質問したところ、Gemfileからrubygemsの記載は削除するようアドバイスがあり、こちらは早々に削除しました
いろいろ試しても、ターミナル画面でのバージョン≠デプロイ時のバージョンとなる
Herokuでは、Rubygemsのバージョンはrubyのバージョンに依存するという記載もどこかで見たので、ruby 2.7.7のままならRubygemsはなにをしても3.1.6のままなのでは・・?
(どこで見たかは、もう見つけられない)
手詰まりになる
解決方法
エラー文から「which is incompatible with the current version, 3.1.6
」をそのままGoogle検索
そこで見つけた記事を参考に、Gemfileに以下を書き加えることでffiを下げてみる
(記事リンクがなぜか埋め込めませんでした)
gem "ffi", "< 1.17.0"
デプロイするとrubygemsに関するエラーは消え、解決!!
#DAY26