`method_missing':#Rails :: Application :: Configuration:0x00>的未定义方法`action_mailer'

sup*_*roi 6 ruby ruby-on-rails ruby-on-rails-4 osx-mavericks

我正在构建一个rails应用程序并使用rails 4.0.1.我有一个错误,并注意到它被提到作为3个月前的rails上的错误所以我决定:捆绑更新并获得rails 4.0.3

在这样做之后,测试和服务器都不会启动并且它们会抛出错误:

gems/railties-4.0.3/lib/rails/railtie/configuration.rb:95:在`method_missing'中:未定义的方法`action_mailer'用于#(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
Run Code Online (Sandbox Code Playgroud)

sup*_*roi 5

找到解决方案,以防有人登陆这里:

主要问题是,在我的 Gemfile 中,您可以看到没有设置特定的 gem 版本(除了 bcrypt)。不知何故,这使得捆绑包在我尚不清楚的情况下安装过时的版本。

修复步骤:

  1. 完全删除宝石集(如果您正在使用宝石集)或卸载所有宝石
  2. 删除 Gemfile.lock
  3. 指定您需要什么版本的 Rails,例如'rails', '~> 4.0.3'
  4. bundle install

你已经准备好了:)