自分ノウハウ
bundle installで詰まった時は以下の手順が良いかもと思った
1.まず社内の人のbundle設定とGemfile.lock設定をもらってbundle install --path vendor/bundle
を実施
2.以下を良い塩梅で並行して実施
・依存関係を壊さぬようバージョンをおろす
→gem queryやgem list gem名 -reaなどでインストール可能なバージョンを確認:参考
・エラーログをググってそれを実行
・社内知見をあさって実施
・gemのgitなどの公式サイトを確認、自分のインストールしているバージョンに不具合ないかissueで検索したりもよし
・ruby -vでバイナリーバージョンを確認。
x86_64-darwin19とかなら、x86_64はmacのバージョンなので、こんな感じのとこ見て、無印のosあればバージョンは問題なし
注意点
・gemのインストール先に注意
・bundle のconfig設定と、どのconfig設定を参照しているか注意
・エラーログだけでなく、インストール時などもログを注意してみること
・ここを参考にgitignoreを対応
具体例
eventmachine(em-websocketが依存)
以下のようなエラー
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [rubyeventmachine.bundle] Error 1
make failed, exit code 2
Gem files will remain installed in xxx/vendor/bundle/ruby/2.7.0/gems/eventmachine-1.2.7 for inspection.
Results logged to xxx/vendor/bundle/ruby/2.7.0/extensions/x86_64-darwin-22/2.7.0/eventmachine-1.2.7/gem_make.out
An error occurred while installing eventmachine (1.2.7), and Bundler cannot continue.
Make sure that `gem install eventmachine -v '1.2.7' --source 'https://rubygems.org/'` succeeds before bundling.
In Gemfile:
em-websocket was resolved to 0.5.1, which depends on
eventmachine
Gemfileに以下を追記してbundle install
gem 'eventmachine', '1.0.9.1'
gem query eventmachine -rea
WARNING: query command is deprecated. It will be removed in Rubygems 4.
WARNING: It is recommended that you use `gem search` or `gem list` instead.
*** REMOTE GEMS ***
eventmachine (1.2.7 ruby java x64-mingw32 x86-mingw32, 1.2.6 ruby java x64-mingw32 x86-mingw32, 1.2.5 ruby java x64-mingw32 x86-mingw32, 1.2.3 ruby java x64-mingw32 x86-mingw32, 1.2.2 ruby java x64-mingw32 x86-mingw32, 1.2.1 ruby java x64-mingw32 x86-mingw32, 1.2.0.1 ruby java x64-mingw32 x86-mingw32, 1.2.0 ruby x64-mingw32 x86-mingw32, 1.0.9.1 ruby java, 1.0.9 ruby java, 1.0.8 ruby java, 1.0.7 ruby java, 1.0.6 ruby java, 1.0.5 ruby java, 1.0.4 ruby java, 1.0.3 ruby java x86-mingw32 x86-mswin32-60, 1.0.2 ruby java x86-mingw32 x86-mswin32-60, 1.0.1 ruby java x86-mingw32 x86-mswin32-60, 1.0.0 ruby java x86-mingw32 x86-mswin32-60, 0.12.10 ruby java x86-mswin32-60, 0.12.8 ruby java x86-mswin32-60, 0.12.6 ruby java x86-mswin32-60, 0.12.4, 0.12.2, 0.12.0 ruby i386-mswin32, 0.10.0, 0.9.0, 0.8.1, 0.8.0, 0.7.2, 0.7.0, 0.5.3, 0.5.2, 0.5.1, 0.4.5, 0.4.4, 0.4.3, 0.4.2, 0.4.0, 0.3.1)
libv8
バックアップをとってGemfile.lockを削除し、Gemfile.lockの記載をlibv8-node (16.10.0.0)
に変えてbundle install
mysql2
以下のコマンドを実施
bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"