ruby-on-rails - `method_missing':#<Rails::Application::Configuration:0x00> 的未定义方法 `action_mailer'

标签 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: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

最佳答案

已找到解决方案,以防有人落在这里:

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

修复步骤:

  1. 完全删除 gemset(如果您正在使用一个)或卸载所有 gem
  2. 删除 Gemfile.lock
  3. 指定您需要的 Rails 版本,例如'rails', '~> 4.0.3'
  4. 捆绑安装

你已经准备好了:)

关于ruby-on-rails - `method_missing':#<Rails::Application::Configuration:0x00> 的未定义方法 `action_mailer',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21894467/

相关文章:

ruby-on-rails - 在 Rails 中动态定义类方法

ruby-on-rails - Rails 3.x 中的人类属性名称?

ruby - 为什么带有 initialize() 的 respond_to 返回 false?

ruby-on-rails - Ruby on Rails,访问非持久属性和属性默认值

ruby-on-rails - 我如何测试设计参数 sanitizer

mysql - 从表中过滤掉过时的项目

java - 需要 MVC 模式的帮助

ruby - 将 HTTP 响应放入 Ruby on Rails 应用程序的哪个文件?

ruby - 如何测试一个 block 是否被屈服?

javascript - 谷歌地图身份验证不起作用,内容安全策略指令