`method_missing': #<Rails::Application::Configuration:0x00>没有定义`action_mailer`方法

6
我正在构建一个Rails应用程序,之前使用的是Rails 4.0.1。 我发现了一个错误,注意到在3个月前提到过这个错误,因此我决定执行bundle update,并获取Rails 4.0.3。
但是,在这样做之后,测试和服务器都无法启动并抛出以下错误: gems/railties-4.0.3/lib/rails/railtie/configuration.rb:95:in `method_missing': undefined method `action_mailer' for # (NoMethodError)
目前,我在config/environments/*中将action_mailer行注释掉了,但是找到一个真正的解决方案会更好。 在Google上搜索没有得到关于这个特定错误的任何信息。
如果需要更多细节,请告诉我。 非常感谢。
更新:这是我的Gemfile
source 'https://rubygems.org'
ruby '2.0.0'

gem 'bootstrap-sass'
gem 'bootstrap_form'
gem 'coffee-rails'
gem 'rails'
gem 'haml-rails'
gem 'sass-rails'
gem 'uglifier'
gem 'jquery-rails'
gem 'bcrypt-ruby', '~> 3.1.2' 

group :development do
  gem 'sqlite3'
  gem 'thin'
  # gem "better_errors"
  gem "binding_of_caller"
end

group :production do
  gem 'pg'
  gem 'rails_12factor'
end

group :development, :test do
  gem 'rspec-rails'
  gem 'pry'
  gem 'pry-nav'
end

group :test do
  gem "faker"
  gem "capybara"
  gem "database_cleaner"
  gem "launchy"
  gem 'shoulda-matchers'
  gem "selenium-webdriver"
  gem "fivemat"
  gem 'fabrication'
end

也许值得尝试删除Rails 3的gems...您可能还需要重新安装Rails 4。 - CDub
谢谢您的回复。我卸载了所有的宝石并重新安装,但问题仍然存在。为了帮助解决问题,我附上了我的gemfile文件。 - superuseroi
2个回答

5
解决方法如下,如果有人遇到同样的问题可以参考:
主要问题在于我的Gemfile中除了bcrypt之外没有设置特定的gem版本。不知何故,在某些情况下这会使bundle安装过时的版本。
解决步骤:
  1. 完全删除gemset(如果您正在使用)或卸载所有gems
  2. 删除Gemfile.lock文件
  3. 指定你需要的rails版本,例如:'rails','〜> 4.0.3'
  4. bundle install
完成 :)

我现在遇到了这个确切的问题,但我担心实施这个解决方案可能会损坏我的环境。当你说完全删除你的gemset时,你是指项目本地的gemset还是全局的gemset?我该如何实施这些步骤? - d00medman
很难在评论中解释清楚。它取决于你使用哪个ruby版本管理器(rvben?Rvm?/等等..最好在他们各自的社区中询问)。gemfile.lock文件中包含了所有正在使用的版本,如果你想要,可以复制并粘贴,并且只更改rails gem的版本。 - superuseroi

0

在我的情况下,我已经安装了宝石(gems),但由于devkit没有正确安装,宝石没有编译。

设置好devkit之后,我不得不卸载所有的rails宝石(actionmailer、activerecord、actioncable......),然后再次安装rails。

然后就可以工作了。


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