Spree安装失败。出现错误:undefined method `add_module' for Devise:Module (NoMethodError)

3
我正在按照这里提供的基本说明进行操作:http://guides.spreecommerce.com/getting_started.html 顺便说一下,我已经在我的 Gemfile 文件中添加了 gem 'devise-encryptable'
当我进入 mystore 目录并试图运行 spree install 时,我遇到了以下错误:
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/devise-encryptable-0.1.1/lib/devise/encryptable/encryptable.rb:28:in `<top (required)>': undefined method `add_module' for Devise:Module (NoMethodError)
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/devise-encryptable-0.1.1/lib/devise-encryptable.rb:1:in `require'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/devise-encryptable-0.1.1/lib/devise-encryptable.rb:1:in `<top (required)>'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/bundler-1.2.3/lib/bundler/runtime.rb:68:in `require'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/bundler-1.2.3/lib/bundler/runtime.rb:68:in `block (2 levels) in require'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/bundler-1.2.3/lib/bundler/runtime.rb:66:in `each'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/bundler-1.2.3/lib/bundler/runtime.rb:66:in `block in require'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/bundler-1.2.3/lib/bundler/runtime.rb:55:in `each'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/bundler-1.2.3/lib/bundler/runtime.rb:55:in `require'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/bundler-1.2.3/lib/bundler.rb:128:in `require'
    from /Users/amiterandole/Desktop/current/rails/mystore/config/application.rb:7:in `<top (required)>'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.11/lib/rails/commands.rb:24:in `require'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.11/lib/rails/commands.rb:24:in `<top (required)>'
    from script/rails:6:in `require'
from script/rails:6:in `<main>'

发生了什么问题,该如何解决?我正在使用最新版本的 Rails 和 Spree。我安装的 Devise 版本是 devise-2.2.2

更新:这是我的 gemfile 文件:

source 'https://rubygems.org'

gem 'rails', '3.2.11'

gem 'pg'


# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'

  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  # gem 'therubyracer', :platforms => :ruby

  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'

gem 'devise-encryptable'

# To use debugger
# gem 'debugger'
gem 'spree', '1.3.1'
gem 'spree_gateway', :github => 'spree/spree_gateway', :branch => '1-3-stable'
gem 'spree_auth_devise', :github => 'spree/spree_auth_devise', :branch => '1-3-stable'

请展示您的整个 Gemfile - Ryan Bigg
@RyanBigg 我已经更新了我的Gemfile,可以看一下。 - Amit Erandole
3个回答

9

尝试将此行放置在Gemfile的底部:gem 'devise-encryptable'

这为我解决了问题。可能是因为devise-encryptable gem发现了旧版本的Devise,该版本不具备Devise.add_module方法。


1
谢谢 George。简直不敢相信我为此浪费了几个小时的时间。 - Amit Erandole

1
我刚遇到了这个错误并找到了解决方案。您需要在 gem 目录下打开文件 lib/devise-encryptable.rb 并在开头添加此行:require 'devise'。别忘了按照 this advice 进行操作。享受吧。

0
从你的Gemfile中删除gem 'devise-encryptable',因为它已经在spree_auth_devise gem中被指定为依赖项。这里发生的情况是,在devise gem之前加载了这个gem,这就是为什么你的应用程序会出现问题的原因。

这个没有起作用,但是把这一行移到文件底部就可以了。 - Amit Erandole

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接