J'essaye de pousser mon application sur heroku. Je suis toujours en développement. J'utilise la devise avec le module confirmable.
Lorsque j'essaie d'ajouter un utilisateur avec la console heroku, j'ai cette erreur:
Missing host to link to! Please provide :host parameter or set default_url_options[:host]
dans l'environnement de test et de développement, j'ai la ligne suivante:
environnements / development.rb et environnements / test.rb
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
Je n'ai rien configuré dans l'environnement de production.
J'ai essayé de pousser avec
config.action_mailer.default_url_options = { :host => 'mywebsitename.com' }
config.action_mailer.default_url_options = { :host => 'heroku.mywebsitename.com' }
mais ça ne marche pas trop ..
Je vois sur le web que cela pourrait être lié à ActionMailer mais je ne sais pas ce que je dois configurer. Merci beaucoup pour votre idée!
ÉDITÉ:
Salut,
Afin de ne pas faire planter mon application lorsque j'appuie sur heroku, je mets ceci dans mon env / test.rb et mon env / dev.rb (pas dans env.rb je pense que c'est parce que c'est une application rails 3)
config.action_mailer.default_url_options = { :host => 'yourapp.heroku.com' }
Mais quand j'ai essayé de créer un utilisateur dans la console heroku:
User.create(:username => "test", :email => "[email protected]", :password => "test1234", :password_confirmation => "test1234", :confirmed_at => "2010-11-03 14:11:15.520128")
voici les erreurs que j'ai:
ActionView::Template::Error: Missing host to link to! Please provide :host parameter or set default_url_options[:host]
/home/slugs/.../mnt/.bundle/gems/ruby/1.8/gems/actionpack-3.0.0/lib/action_dispatch/routing/route_set.rb:473:in `url_for'
/home/slugs/.../mnt/.bundle/gems/ruby/1.8/gems/actionpack-3.0.0/lib/action_dispatch/routing/url_for.rb:132:in `url_for'
/home/slugs/.../mnt/.bundle/gems/ruby/1.8/gems/actionpack-3.0.0/lib/action_view/helpers/url_helper.rb:99:in `url_for'
/home/slugs/.../mnt/.bundle/gems/ruby/1.8/gems/actionpack-3.0.0/lib/action_dispatch/routing/route_set.rb:195:in `user_confirmation_url'
MODIFIÉ (2)
Quand je tape les logs heroku sur la console, j'ai ceci ==> production.log <== Donc je pense que quand on déploie sur heroku, c'est déjà en production.
Je configure env / prod.rb comme ceci:
config.action_mailer.default_url_options = { :host => 'yourapp.heroku.com' }
et maintenant j'ai ceci comme erreur lorsque j'essaie de créer un utilisateur:
Errno::EAFNOSUPPORT: Address family not supported by protocol - socket(2)
/usr/ruby1.8.7/lib/ruby/1.8/net/smtp.rb:551:in `initialize'
/usr/ruby1.8.7/lib/ruby/1.8/net/smtp.rb:551:in `open'
/usr/ruby1.8.7/lib/ruby/1.8/net/smtp.rb:551:in `do_start'
/usr/ruby1.8.7/lib/ruby/1.8/timeout.rb:62:in `timeout'
la source
:host => 'yourapp.heroku.com'
cela devrait être votre domaine. Par exemple, si votre domaine est yahoo.com, il devrait l'êtreyahoo.heroku.com
ou si vous avez déjà configuré des domaines personnalisés, il ne s'agira que de votre URLyahoo.com
config.action_mailer.default_url_options = { :host => 'yourapp.herokuapp.com'
, par opposition à justeconfig.action_mailer.default_url_options = { :host => 'yourapp.heroku.com'
?D'accord,
Vous devez d'abord installer le gem sendgrid avec cette ligne de commande:
Ensuite, il vous suffit de configurer votre env / dev.rb et env / prod.rb comme ceci:
env / dev.rb
env / prod.rb
Appuyez sur git et heroku. Cela devrait fonctionner.
la source
method_missing': undefined method
action_mailer 'pour # <Rails:: Application :: Configuration: 0x0000000241f760> (NoMethodError)La réponse de Codeglot ci-dessus fait le travail, mais nous voulions quelque chose d'un peu plus flexible, alors nous avons fait ceci:
Sur Heroku, nous exécutons plusieurs environnements de production pour la préparation et les tests, nous avons donc besoin d'une solution flexible pour le fichier d'environnement production.rb.
En production.rb
Ensuite, définissez la variable d'environnement MAILER_URL pour votre application comme ceci
la source
Si vous utilisez Cedar :
exécuter à
heroku addons:add sendgrid:free
partir de votre console.Ajoutez les lignes suivantes à
config/environments/production.rb
dans votre application..
la source
J'ai dû faire un certain nombre de choses pour le faire fonctionner dans l' environnement de production : À l'intérieur de mon
production.rb
fichier (/config/environments/production.rb), j'ai ajouté ce qui suit:C'est avec Rails 4 et Devise 3
la source
default_url_options
provoqué une erreur qui a fait échouer mes actifs de précompilation, juste pour info. Quand je l'ai changé en `= {host: 'myappsname.herokuapp.com'}` cela a fonctionné.Celui qui travaille après tant de recherches,
N'oubliez pas d'ajouter par défaut from: l' adresse mail dans votre ApplicationMailer (application_mailer.rb) comme,
Ajoutez la configuration ci-dessous dans votre production.rb .
Activez IMAP à partir de vos paramètres Gmail dans l' onglet Transfert IMAP / POP .
Autoriser les applications moins sécurisées: ACTIVÉ à partir de https://myaccount.google.com/lesssecureapps
Vous êtes maintenant prêt à partir. :)
la source