2023年10月7日の activesupport
のアップデートによって CocoaPods が使えなくなった。すぐに修正されると思うが、直近で困ってる方のために備忘録を残す。
bundler: failed to load command: pod
エラーが発生する
bundle update
のあと、 bundle exec pod update
の実行時に、bundler: failed to load command: pod
と CocoaPods の読み込みに失敗するエラーが発生した。
$ bundle exec pod update bundler: failed to load command: pod (/PATH/works/ptcgnote_app/ptcgnote/vendor/bundle/ruby/2.7.0/bin/pod) Traceback (most recent call last): 24: from /PATH/.rbenv/versions/2.7.4/bin/bundle:25:in `<main>' 23: from /PATH/.rbenv/versions/2.7.4/bin/bundle:25:in `load' 22: from /PATH/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/bundler-2.4.20/exe/bundle:29:in `<top (required)>' 21: from /PATH/.rbenv/versions/2.7.4/lib/ruby/site_ruby/2.7.0/bundler/friendly_errors.rb:117:in `with_friendly_errors' 20: from /PATH/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/bundler-2.4.20/exe/bundle:37:in `block in <top (required)>' 19: from /PATH/.rbenv/versions/2.7.4/lib/ruby/site_ruby/2.7.0/bundler/cli.rb:28:in `start' 18: from /PATH/.rbenv/versions/2.7.4/lib/ruby/site_ruby/2.7.0/bundler/vendor/thor/lib/thor/base.rb:485:in `start' 17: from /PATH/.rbenv/versions/2.7.4/lib/ruby/site_ruby/2.7.0/bundler/cli.rb:34:in `dispatch' 16: from /PATH/.rbenv/versions/2.7.4/lib/ruby/site_ruby/2.7.0/bundler/vendor/thor/lib/thor.rb:392:in `dispatch' 15: from /PATH/.rbenv/versions/2.7.4/lib/ruby/site_ruby/2.7.0/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command' 14: from /PATH/.rbenv/versions/2.7.4/lib/ruby/site_ruby/2.7.0/bundler/vendor/thor/lib/thor/command.rb:27:in `run' 13: from /PATH/.rbenv/versions/2.7.4/lib/ruby/site_ruby/2.7.0/bundler/cli.rb:492:in `exec' 12: from /PATH/.rbenv/versions/2.7.4/lib/ruby/site_ruby/2.7.0/bundler/cli/exec.rb:23:in `run' 11: from /PATH/.rbenv/versions/2.7.4/lib/ruby/site_ruby/2.7.0/bundler/cli/exec.rb:58:in `kernel_load' 10: from /PATH/.rbenv/versions/2.7.4/lib/ruby/site_ruby/2.7.0/bundler/cli/exec.rb:58:in `load' 9: from /PATH/works/ptcgnote_app/ptcgnote/vendor/bundle/ruby/2.7.0/bin/pod:25:in `<top (required)>' 8: from /PATH/works/ptcgnote_app/ptcgnote/vendor/bundle/ruby/2.7.0/bin/pod:25:in `load' 7: from /PATH/works/ptcgnote_app/ptcgnote/vendor/bundle/ruby/2.7.0/gems/cocoapods-1.13.0/bin/pod:36:in `<top (required)>' 6: from /PATH/.rbenv/versions/2.7.4/lib/ruby/site_ruby/2.7.0/rubygems/core_ext/kernel_require.rb:38:in `require' 5: from /PATH/.rbenv/versions/2.7.4/lib/ruby/site_ruby/2.7.0/rubygems/core_ext/kernel_require.rb:38:in `require' 4: from /PATH/works/ptcgnote_app/ptcgnote/vendor/bundle/ruby/2.7.0/gems/cocoapods-1.13.0/lib/cocoapods.rb:9:in `<top (required)>' 3: from /PATH/.rbenv/versions/2.7.4/lib/ruby/site_ruby/2.7.0/rubygems/core_ext/kernel_require.rb:38:in `require' 2: from /PATH/.rbenv/versions/2.7.4/lib/ruby/site_ruby/2.7.0/rubygems/core_ext/kernel_require.rb:38:in `require' 1: from /PATH/works/ptcgnote_app/ptcgnote/vendor/bundle/ruby/2.7.0/gems/activesupport-7.1.0/lib/active_support/core_ext/array/conversions.rb:8:in `<top (required)>' /PATH/works/ptcgnote_app/ptcgnote/vendor/bundle/ruby/2.7.0/gems/activesupport-7.1.0/lib/active_support/core_ext/array/conversions.rb:108:in `<class:Array>': undefined method `deprecator' for ActiveSupport:Module (NoMethodError) Did you mean? deprecate_constant
エラーメッセージの内容は完全には理解できないが、ActiveSupport
ライブラリ内で deprecator
というメソッドが未定義であることが記載されている。 deprecator
が deprecate_constant
に名前が変更されたのかな?
解決方法
Gemfile.lock
を確認したところ、activesupport
のバージョンが v7.0.8 から v7.1.0 にアップデートされていることを確認した。このアップデートが破壊的な変更を含んでいるのであろう。
--- activesupport (7.0.8) +++ activesupport (7.1.0)
問題発生の原因がわかった。影響範囲が広い(どの環境でも発生しうる)問題のため、そのうち CocoaPods 側でも対応してくれることだろう。
暫定的な対策としては、Gemfile を編集して activesupport
のバージョンを 7.0.8
で固定すると、問題なく CocoaPods が使えるようになる。
source "https://rubygems.org" gem 'cocoapods' gem 'fastlane' gem 'activesupport', '= 7.0.8'
Gemfile を弄れない環境の場合、Bundler の更新は止めておいた方が良さそうだ。