s4na's blog

s4naのテックブログ

ファーストペンギン

最新版のDevise 4.7.3が入っている状態でOmniAuth 2.0.0をインストールすると、Rails Serverを起動することができない問題の対処方法

Dependabotに「Devise 1.9.1はSecurityに脆弱性があるからDevise 2.0.0にアップデートしよう」と通知をもらったので、ライブラリのバージョンをアップデートしようとしたところ、Rails Serevrが起動しなくなりました。😢

実行環境

  • Ruby 2.7.2
  • Rails 6.1.0
  • Devise 4.7.3
  • OmniAuth 2.0.0

エラー内容

/Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/devise-4.7.3/lib/devise/omniauth.rb:12:in `<main>': You are using an old OmniAuth version, please ensure you have 1.0.0.pr2 version or later installed. (RuntimeError)

OmniAuthのバージョンは2.0.0なので、1.0.0より古いはずはない・・・🤔

エラー全文

$ bundle exec rails c
/Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/devise-4.7.3/lib/devise/omniauth.rb:12:in `<main>': You are using an old OmniAuth version, please ensure you have 1.0.0.pr2 version or later installed. (RuntimeError)
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/zeitwerk-2.4.2/lib/zeitwerk/kernel.rb:34:in `require'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/activesupport-6.1.0/lib/active_support/dependencies.rb:332:in `block in require'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/activesupport-6.1.0/lib/active_support/dependencies.rb:299:in `load_dependency'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/activesupport-6.1.0/lib/active_support/dependencies.rb:332:in `require'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/devise-4.7.3/lib/devise.rb:443:in `omniauth'
    from /Users/mbp2021/projects/s4na/twi-note/config/initializers/devise.rb:266:in `block in <main>'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/devise-4.7.3/lib/devise.rb:307:in `setup'
    from /Users/mbp2021/projects/s4na/twi-note/config/initializers/devise.rb:5:in `<main>'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:59:in `load'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:59:in `load'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/activesupport-6.1.0/lib/active_support/dependencies.rb:326:in `block in load'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/activesupport-6.1.0/lib/active_support/dependencies.rb:299:in `load_dependency'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/activesupport-6.1.0/lib/active_support/dependencies.rb:326:in `load'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/railties-6.1.0/lib/rails/engine.rb:681:in `block in load_config_initializer'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/activesupport-6.1.0/lib/active_support/notifications.rb:205:in `instrument'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/railties-6.1.0/lib/rails/engine.rb:680:in `load_config_initializer'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/railties-6.1.0/lib/rails/engine.rb:634:in `block (2 levels) in <class:Engine>'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/railties-6.1.0/lib/rails/engine.rb:633:in `each'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/railties-6.1.0/lib/rails/engine.rb:633:in `block in <class:Engine>'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/railties-6.1.0/lib/rails/initializable.rb:32:in `instance_exec'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/railties-6.1.0/lib/rails/initializable.rb:32:in `run'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/railties-6.1.0/lib/rails/initializable.rb:61:in `block in run_initializers'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/2.7.0/tsort.rb:228:in `block in tsort_each'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/2.7.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/2.7.0/tsort.rb:422:in `block (2 levels) in each_strongly_connected_component_from'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/2.7.0/tsort.rb:431:in `each_strongly_connected_component_from'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/2.7.0/tsort.rb:421:in `block in each_strongly_connected_component_from'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/railties-6.1.0/lib/rails/initializable.rb:50:in `each'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/railties-6.1.0/lib/rails/initializable.rb:50:in `tsort_each_child'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/2.7.0/tsort.rb:415:in `call'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/2.7.0/tsort.rb:415:in `each_strongly_connected_component_from'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/2.7.0/tsort.rb:349:in `block in each_strongly_connected_component'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/2.7.0/tsort.rb:347:in `each'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/2.7.0/tsort.rb:347:in `call'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/2.7.0/tsort.rb:347:in `each_strongly_connected_component'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/2.7.0/tsort.rb:226:in `tsort_each'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/2.7.0/tsort.rb:205:in `tsort_each'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/railties-6.1.0/lib/rails/initializable.rb:60:in `run_initializers'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/railties-6.1.0/lib/rails/application.rb:384:in `initialize!'
    from /Users/mbp2021/projects/s4na/twi-note/config/environment.rb:7:in `<main>'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/zeitwerk-2.4.2/lib/zeitwerk/kernel.rb:34:in `require'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/activesupport-6.1.0/lib/active_support/dependencies.rb:332:in `block in require'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/activesupport-6.1.0/lib/active_support/dependencies.rb:299:in `load_dependency'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/activesupport-6.1.0/lib/active_support/dependencies.rb:332:in `require'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/application.rb:106:in `preload'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/application.rb:157:in `serve'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/application.rb:145:in `block in run'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/application.rb:139:in `loop'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/application.rb:139:in `run'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/application/boot.rb:19:in `<top (required)>'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/site_ruby/2.7.0/rubygems/core_ext/kernel_require.rb:85:in `require'
    from /Users/mbp2021/.rbenv/versions/2.7.2/lib/ruby/site_ruby/2.7.0/rubygems/core_ext/kernel_require.rb:85:in `require'
    from -e:1:in `<main>'

原因

原因を調べてみたところ、

lib/devise/omniauth.rb のファイルに

github.com

unless OmniAuth::VERSION =~ /^1\./
  raise "You are using an old OmniAuth version, please ensure you have 1.0.0.pr2 version or later installed."
end

と書いてあって、OmniAuthのバージョンが 1.X.X じゃないとエラーになってしまうようでした。

対処方法(更新:2021/5/5)

Devise 4.8.0がリリースされているので、Gemのバージョンアップをすることで対処可能です。

github.com

バージョンアップの方法はGemfileに

gem "devise"

と記載して、ターミナルで

$ bundle update devise

を実行すれば更新されます。

おわりに

相談に乗ってくださった神速さんありがとうございました🙏