在 omniauth 更新后 Rails 服务器停止运行(中断设计)

Ant*_*rão 6 rubygems ruby-on-rails devise omniauth omniauth-facebook

我按照从分支到主(设计)的拉取请求,但我仍然遇到错误,我无法再将 api 部署到服务器

我也尝试了这个问题中提供的解决方案,但没有成功:

最新的 omniauth-facebook gem 破坏设计

错误:

/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/devise-4.7.3/lib/devise/omniauth.rb:12:in `<top (required)>': You are using an old OmniAuth version, please ensure you have 1.0.0.pr2 version or later installed. (RuntimeError)
Run Code Online (Sandbox Code Playgroud)

本地主机上的错误是一样的

红宝石版本:2.5.1p57

导轨 (5.1.7)

设计 (4.7.3)

omn​​iauth (2.0.1)

omn​​iauth-facebook (8.0.0)

omn​​iauth-oauth2 (1.7.1)

小智 9

我认为这个提交修复了你所看到的问题,不幸的是它不会自动被拉到你的项目中,bundle update直到设计颠簸他们的版本。

所以我认为你可以在 Gemfile 中解决这个问题gem 'devise', github: 'heartcombo/devise'(你可能需要先卸载原始版本)

您可以通过使用bundle show devise来验证新 gem 的位置,转到 lib/devise/omniauth.rb,并确保它以以下内容打开:

# PATH_TO_DEVISE_GEM/lib/devise/omniauth.rb

# frozen_string_literal: true

begin
  gem "omniauth", ">= 1.0.0"

  require "omniauth"
rescue LoadError
  warn "Could not load 'omniauth'. Please ensure you have the omniauth gem >= 1.0.0 installed and listed in your Gemfile."
  raise
end
Run Code Online (Sandbox Code Playgroud)

当我昨天遇到这个完全相同的问题时,我的版本有以下内容,这就是为什么它对我来说是崩溃的:

# PATH_TO_OLD_DEVISE_GEM/lib/devise/omniauth.rb

[...]
unless OmniAuth::VERSION =~ /^1\./  if Gem::Version.new(OmniAuth::VERSION) < Gem::Version.new('1.0.0')
  raise "You are using an old OmniAuth version, please ensure you have 1.0.0.pr2 version or later installed."     raise "You are using an old OmniAuth version, please ensure you have 1.0.0 version or later installed."
end
[...]
Run Code Online (Sandbox Code Playgroud)