web-dev-qa-db-ja.com

DeviseはRails 4.2アップグレードでエラーを発生させます

Rails sを実行すると:

/Users/galli01anthony/.rvm/gems/Ruby-2.1.3/gems/devise-3.2.4/lib/devise/Rails/routes.rb:455:in
`ensure in with_devise_exclusive_scope': undefined method `merge!' for
#<ActionDispatch::Routing::Mapper::Scope:0x007f8743e19020> (NoMethodError)

rake db:resetまたはdb:migrateまたはdb:setupを実行すると:

rake aborted!
NoMethodError: undefined method `merge!' for #<ActionDispatch::Routing::Mapper::Scope:0x007fca8d3f2780>
30

このPRで問題が修正されたようです https://github.com/plataformatec/devise/pull/315 少し前。アプリケーションのdevise gemを更新します(可能な場合)。

Gemfileのdeviseのバージョンを少なくとも3.4.0に変更します。

gem 'devise', '~> 3.4.0'   # or later

次に実行します:

bundle update devise

更新:Deviseはバージョン3.5.xに更新され、4.0はまもなくリリースされます( RubyGems.org のすべてのバージョンを参照してください)。つまり、Gemfileに少なくともバージョン3.5.xを定義する必要があるかもしれません。

gem 'devise', '~> 3.5.0'

または、可能な最新バージョンをロードするだけです。

gem 'devise', '> 3.4'

bundle update deviseが後に続きます

71
spickermann

最近更新 https://github.com/plataformatec/devise/pull/3153#issuecomment-71185519

Gemfile

gem 'devise', github: 'plataformatec/devise'

5
twmulloy

それでも、デバイス3.4.1ではエラーが発生していました。

Userモデルで:confirmableを削除すると、問題が修正されました。

1
Antonio Sito