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

Attempting to invoke a Rails console (bundle exec rails c) or Rails server (bundle exec rails s) causes the following exception to be thrown:

~/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'
...

Am I missing something here or there any other gems that could be causing an incompatibility issue?

This is the offending line in config/environments/development.rb:

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

The following is the contents of my 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


Solution 1:[1]

I can't comment so, I answer here I go this error inside Docker container I added following in Dockerfile so it works for me RUN BUNDLE_GEMFILE=Gemfile

Solution 2:[2]

I encountered the same problem during the migration of Rails 5.2 to Rails 6.1. The problem was that I had different version of "Railties" gem installed.

So to solve this, after I upgraded gem 'rails' version to 6.1, I also upgraded gem 'railties' to 6.1 too.

Solution 3:[3]

I had a similar problem (same first line with method_missing) but my issue had a much more prosaic explanation:

For some reason, after I'd switched around/updated my dependencies I had to remove the line

config.action_mailbox.ingress = :relay

from both development and production enviornments.

I'm just including the answer here so anyone else who spends hours trying to fix this finds a potential fix in the result.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Chetan kapoor
Solution 2 recepinanc
Solution 3 Peter Gerdes