`method_missing':未定义的方法`action_mailer'用于#<rails :: application :: configuration:0x00> </rails :: application :: configuration:0x00>

时间:2014-02-19 23:01:10

标签: ruby-on-rails ruby 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

2 个答案:

答案 0 :(得分:3)

找到解决方案,万一有人来到这里:

主要问题是在我的Gemfile中,因为你看不到设置了特定的gem版本(除了bcrypt) 不知何故,这使得bundle在我尚不清楚的情况下安装过时的版本。

修复步骤:

  1. 完全删除gemset(如果您使用的话)或全部卸载 宝石
  2. 删除Gemfile.lock
  3. 指定您需要的导轨版本,例如'rails', '~> 4.0.3'
  4. bundle install
  5. 你被设定:)

答案 1 :(得分:0)

在我的情况下,我已经安装了宝石,因为devkit没有正确安装,所以宝石没有编译。

设置devkit后,我必须卸载所有rails gems(actionmailer,activerecord,actioncable ......),然后再次安装rails。

然后它奏效了。