【问题标题】:Rails environment config: `method_missing': undefined method `action_mailer'Rails 环境配置:`method_missing':未定义的方法`action_mailer'
【发布时间】:2016-09-05 17:41:59
【问题描述】:

尝试调用 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

【问题讨论】:

  • 之前是否有效或从未有效?
  • 它从来没有奏效。这是我第一次尝试使用和配置 actionmailer。
  • 尝试从您的 gemfile 中剩余的 actionmailer 然后捆绑安装
  • 这没有任何区别,即使从头开始重新安装所有 gem。
  • 没有bundle exec 也能工作吗?

标签: ruby-on-rails ruby-on-rails-4 rubygems bundle actionmailer


【解决方案1】:

解决方案是添加:

require 'action_mailer/railtie'

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

【讨论】:

  • 我遇到了同样的错误,但是一旦我添加了该行,我就会收到这个新错误:cannot load such file -- action_mailer/railtie (LoadError)
【解决方案2】:

我无法评论,我在这里回答 我在 Docker 容器中出现了这个错误,我在 Dockerfile 中添加了以下内容,所以它对我有用 RUN BUNDLE_GEMFILE=Gemfile

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-03-20
      • 2014-06-12
      • 2018-07-10
      • 1970-01-01
      • 2016-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多