Rails 环境配置:“method_missing”:未定义的方法“action_mailer”

Rails environment config: `method_missing': undefined method `action_mailer'

尝试调用 Rails 控制台 (bundle exec rails c) 或 Rails 服务器 (bundle exec rails s) 会导致抛出以下异常:

~/project/.bundle/gems/railties-4.2.6/lib/rails/railtie/configuration.rb:95:in `method_missing': undefined method `action_mailer' for #<Rails::Application::Configuration:0x007fdbe46e7400> (NoMethodError)
    from ~/project/config/environments/development.rb:43:in `block in <top (required)>'
    from ~/project/.bundle/gems/railties-4.2.6/lib/rails/railtie.rb:210:in `instance_eval'
    from ~/project/.bundle/gems/railties-4.2.6/lib/rails/railtie.rb:210:in `configure'
    from ~/project/config/environments/development.rb:1:in `<top (required)>'
    from ~/project/.bundle/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:274:in `require'
...

我是否在这里或那里遗漏了任何其他可能导致不兼容问题的重要信息?

这是 config/environments/development.rb 中的违规行:

  # Save emails to files instead of delivering.
  config.action_mailer.delivery_method = :file

以下是我的 Gemfile 的内容:

source 'https://rubygems.org'

gem 'rails', '4.2.6'
gem 'activemodel'
gem 'actionmailer'
gem 'sass-rails', '~> 5.0.0'
gem 'uglifier', '>= 1.3.0'
gem 'rollbar'
gem 'meta-tags'
gem 'faraday'
gem 'oj'
gem 'dalli-elasticache'
gem 'config'

# Frontend
gem 'jquery-rails'
gem 'jquery-turbolinks'
gem 'bourbon'
gem 'turbolinks'
gem 'therubyracer'

# Deploy
gem 'capistrano'
gem 'capistrano-rbenv'
gem 'capistrano-bundler'
gem 'capistrano-rails'
gem 'capistrano-passenger'
gem 'capistrano-rails-console'
gem 'capistrano-rails-log'

group :development, :test do
  gem 'spring'
  gem 'spring-commands-rspec'
  gem 'byebug'
end

group :test do
  gem 'rspec-rails'
  gem 'capybara'
  gem 'launchy'
  gem 'webmock'
  gem 'capybara-webkit'
  gem 'vcr'
end

group :development do
  gem 'web-console', '~> 2.0'
  gem 'quiet_assets'
end

解决方案是添加:

require 'action_mailer/railtie'

config/application.rb,因为那个文件没有做 require 'rails/all

我不能评论,我在这里回答 我在 Docker 容器中出现此错误,我在 Docker 文件中添加了以下内容,因此它对我有用 RUN BUNDLE_GEMFILE=Gemfile

我在从Rails 5.2迁移到Rails 6.1的过程中遇到了同样的问题。问题是我安装了不同版本的“Railties”gem。

所以为了解决这个问题,我把gem 'rails'版本升级到6.1之后,我也把gem 'railties'升级到6.1

我有一个类似的问题(与 method_missing 相同的第一行)但我的问题有一个更平淡的解释:

出于某种原因,在我切换 around/updated 我的依赖项后,我不得不删除行

config.action_mailbox.ingress = :中继

来自 开发和生产环境。

我只是在此处包含答案,以便其他任何花费数小时尝试解决此问题的人都能在结果中找到潜在的修复方法。