web-dev-qa-db-fra.com

ActionView :: Template :: Error: Hôte manquant vers le lien! Veuillez fournir le paramètre: Host, définissez default_url_options [: Host] ou définissez: only_path sur true

Mon Ruby on Rails action mailer fonctionne bien dans un environnement de développement, mais dans un environnement de production, il continue de lancer:

ActionView::Template::Error: Missing Host to link to! Please provide the :Host parameter, set default_url_options[:Host], or set :only_path to true

Ma configuration de développement est

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  :port           => xxx,
  :address        => 'smtp.example.org',
  :user_name      => '[email protected]',
  :password       => 'xxxxxxxx',
  :domain         => 'xxxxxx.com',
  :authentication => :plain,
}

config.action_mailer.default_url_options = { :Host => 'localhost:3000' }

Ma configuration de production est

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  :port           => 587,
  :address        => 'smtp.example.org',
  :user_name      => '[email protected]',
  :password       => 'xxxxxx',
  :domain         => 'example.com',
  :authentication => :plain,
}
config.action_mailer.default_url_options = { :Host => 'example.com' }

Mes autres environnements sont:

Ruby 2.1.1
Rails 4.0.3
sidekiq 
devise
devise-async

J'ai essayé:

  1. Ajoutez ce qui suit dans un fichier d'initialisation

    ActionMailer::Base.default_url_options[:Host] = "example.com"
    
  2. Cette réponse ici

Aucun d'eux ne fonctionne.

26
Chuanpin Zhu

Au final, j'ai ajouté ce qui suit avec la valeur correcte à chaque fichier d'environnement:

test.rb/ development.rb/ production.rb

Conception 3.2.x - 4.x.x

Rails 4.1.x && Rails 4.2.x && Rails 5.xx

Merci à maudulus

# Default Mailer Host
  Rails.application.routes.default_url_options[:Host] = 'domain.com'
77
blnc

Essayez de redémarrer le serveur. Même dans Rails 4.1 la config n'est pas ré-analysée sans redémarrage.

4
Camden Narzt