使用Rails 4.2升级时,Devise会引发错误

时间:2014-12-22 23:22:51

标签: ruby-on-rails ruby ruby-on-rails-4 devise

当我运行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:resetdb:migratedb:setup时:

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

3 个答案:

答案 0 :(得分:71)

这个问题似乎已经解决了这个PR https://github.com/plataformatec/devise/pull/3153。更新应用程序中的设计gem(如果可能)。

Gemfile中的设计版本更改为至少3.4.0:

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

然后运行:

bundle update devise

更新:前一段时间版本已更新为版本3.5.x4.0即将发布(请参阅RubyGems.org上的所有版本)。也就是说,您可能希望在3.5.x中定义至少一个版本Gemfile

gem 'devise', '~> 3.5.0'

或者只是加载可能的最新版本:

gem 'devise', '> 3.4'

跟随bundle update devise

答案 1 :(得分:5)

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

Gemfile

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

答案 2 :(得分:1)

使用设计3.4.1,它仍然在为我产生错误。

删除用户模型中的:confirmable修复了问题。