簡體   English   中英

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

我無法對此發表評論,我在這里回答我在Dockerfile中添加了以下內容的Docker容器內出現此錯誤,因此它對我RUN BUNDLE_GEMFILE=Gemfile

我在從 Rails 5.2 遷移到 Rails 6.1 的過程中遇到了同樣的問題。 問題是我安裝了不同版本的“Railties”gem。

所以為了解決這個問題,在我將gem 'rails'版本升級到6.1 ,我也將gem 'railties'升級到了6.1

我有一個類似的問題(與 method_missing 相同的第一行)但我的問題有一個更平淡的解釋:

出於某種原因,在我切換/更新我的依賴項之后,我不得不刪除該行

config.action_mailbox.ingress =:中繼

來自開發和生產環境。

我只是在此處包含答案,以便其他任何花費數小時嘗試解決此問題的人都能在結果中找到潛在的解決方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM