Heroku/concevoir - absence de l'hôte de lien! Veuillez fournir :accueil paramètre ou de l'ensemble default_url_options[:host]
Je suis en train d'essayer de pousser mon application sur heroku. Je suis encore en dev.
J'utilise concevoir avec le confirmable module.
Lorsque j'essaie d'ajouter un utilisateur avec le heroku console j'ai eu cette erreur:
Missing host to link to! Please provide :host parameter or set default_url_options[:host]
dans l'essai et l'environnement de dev, j'ai la ligne suivante:
environnements de développement.rb et les environnements de test/.rb
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
Je n'ai pas mis en place quelque chose 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 il ne fonctionne pas trop..
Je vois sur le web qu'il pourrait être lié à ActionMailer mais je ne sais pas ce que j'ai à configurer.
Merci beaucoup pour votre idée!
ÉDITÉ:
Salut,
Afin de ne pas rendre mon application se bloque quand je pousse sur heroku j'ai mis cela dans mon env/test.rb et mon env/dev.rb (pas dans env.rb je pense que c'est parce que c'est un des rails de 3 app)
config.action_mailer.default_url_options = { :host => 'yourapp.heroku.com' }
Mais quand j'ai essayé de créer un utilisateur dans le heroku console:
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 obtenu:
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'
ÉDITÉ (2)
Quand je tape heroku les journaux de la console j'ai eu ce ==> de la production.le journal <== je pense que lorsque l'on déploie sur heroku, il est déjà en production.
- Je configurer l'env/prod.rb comme ceci:
config.action_mailer.default_url_options = { :host => 'yourapp.heroku.com' }
et maintenant j'ai cette 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'
Vous devez vous connecter pour publier un commentaire.
Vous devez l'ajouter à votre
environment.rb
Assurez-vous de changer
host
pour votre production d'url et de le garder à localhost pour le développement. C'est pour l'expéditeur, il a besoin d'un courrier électronique par défaut pour l'envoi d'avis tels que les confirmations etc...Vous devriez vérifier les logs sur le heroku serveur
heroku logs
exécuter à partir de la console et il vous dira l'erreur exacte.Lorsque vous appuyez à heroku, vous devez configurer le
environment.rb
fichier avec le heroku sous-domaine:En fonction de la version, ce qui devrait aller dans
production.rb
, pasenvironment.rb
.:host => 'yourapp.heroku.com'
ce doit être votre domaine. Par exemple, si votre domaine est yahoo.com, alors il devrait êtreyahoo.heroku.com
ou si vous avez déjà le programme d'installation personnalisé domaines, il va juste être votre urlyahoo.com
config.action_mailer.default_url_options = { :host => 'yourapp.herokuapp.com'
, plutôt que de simplementconfig.action_mailer.default_url_options = { :host => 'yourapp.heroku.com'
?yourapp.herokuapp.com
, il suffit de définirconfig.action_mailer.default_url_options = { host: 'yourapp.herokuapp.com' }
, sinon concevoir va générer lien incorrect ex. dans le courriel de confirmation.Ok,
Vous devez d'abord installer le sendgrid gem avec cette ligne de commande:
Ensuite, vous n'aurez qu'à configurer votre env/dev.rb et env/prod.rb comme ceci:
env/dev.rb
env/prod.rb
Pousser sur git et heroku. Il devrait fonctionner..
method_missing': undefined method
action_mailer " pour #<Rails: :Application::Configuration:0x0000000241f760> (NoMethodError)Codeglot anwser ci-dessus fait le travail, mais nous voulions quelque chose d'un peu plus flexible, nous avons donc fait ceci:
Sur Heroku, nous exécuter plusieurs environnements de Production pour la mise en scène et de tests, nous avons donc besoin d'une solution flexible pour la production.rb fichier d'environnement.
Dans la production.rb
Puis définissez la MAILER_URL variable d'environnement pour votre application comme
Si vous êtes en cours d'exécution sur Cèdre:
exécuter
heroku addons:add sendgrid:free
à partir de votre console.Ajoutez les lignes suivantes à
config/environments/production.rb
dans votre application..
J'ai eu à faire un certain nombre de choses pour qu'il fonctionne dans le production de l'environnement:
À l'intérieur de mon
production.rb
le fichier/config/environments/production.rb), j'ai ajouté ce qui suit:C'est avec Rails 4 et Concevoir 3
default_url_options
provoqué une erreur qui fait mon précompilation actifs échec, juste pour info. Quand je l'ai changé en ` = { host: 'myappsname.herokuapp.com' }` il a travaillé.Ici est un truc à prendre en compte. Il sera facile de changer de serveur et de l'environnement, et de changer de domaine dans un domaine personnalisé à heroku.
Au lieu de coder en dur le nom d'hôte, le lire à partir de la demande. Voici un exemple d'une application simple que j'ai.
dans l'exemple simple que j'ai une seule action, créer, que les résultats dans les e-mails envoyés. Vous pouvez ajouter la before_filter dans application_controller.rb sans exclut qu'il soit toujours stocker le nom de l'hôte.
PRO:
CON:
sans default_url_options vous ne pouvez pas envoyer manuellement dans la console
Si vous pouvez voir les inconvénients que je ne peux pas, merci de partager! Grâce
Le travail après de nombreuses recherches,
N'oubliez pas d'ajouter par défaut à partir de: courrier adresse dans votre ApplicationMailer (application_mailer.rb) que,
Ajouter la configuration de votre de production.rb.
Activer IMAP à partir de vos paramètres Gmail dans Transfert IMAP/POP onglet.
Permettre moins des applications sécurisées: SUR de https://myaccount.google.com/lesssecureapps
Maintenant, vous êtes bon pour aller. 🙂