'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 |
