Ich versuche meine App auf Heroku zu pushen. Ich bin immer noch in dev. Ich benutze devise mit dem bestätigbaren Modul.
Wenn ich versuche, einen Benutzer mit der Heroku-Konsole hinzuzufügen, wird folgende Fehlermeldung angezeigt:
Missing host to link to! Please provide :host parameter or set default_url_options[:host]
In der Test- und Entwicklungsumgebung habe ich die folgende Zeile:
Umgebungen / development.rb und Umgebungen / test.rb
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
Ich habe nichts in der Produktionsumgebung eingerichtet.
Ich habe versucht, mit zu pushen
config.action_mailer.default_url_options = { :host => 'mywebsitename.com' }
config.action_mailer.default_url_options = { :host => 'heroku.mywebsitename.com' }
aber es funktioniert auch nicht ..
Ich sehe im Web, dass es mit ActionMailer zusammenhängen könnte, aber ich weiß nicht, was ich konfigurieren muss. Vielen Dank für Ihre Idee!
EDITIERT:
Hallo,
Um zu verhindern, dass meine App abstürzt, wenn ich auf Heroku drücke, habe ich dies in meine env / test.rb und meine env / dev.rb eingefügt (nicht in env.rb, ich denke, das liegt daran, dass es sich um eine Rails 3-App handelt).
config.action_mailer.default_url_options = { :host => 'yourapp.heroku.com' }
Aber als ich versuchte, einen Benutzer in der Heroku-Konsole zu erstellen:
User.create(:username => "test", :email => "[email protected]", :password => "test1234", :password_confirmation => "test1234", :confirmed_at => "2010-11-03 14:11:15.520128")
Hier sind Fehler, die ich bekommen habe:
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'
EDITIERT (2)
Wenn ich Heroku-Protokolle auf der Konsole eingebe, bekomme ich dieses ==> Production.log <== Ich denke also, wenn man Heroku bereitstellt, ist es bereits in Produktion.
Ich konfiguriere die env / prod.rb folgendermaßen:
config.action_mailer.default_url_options = { :host => 'yourapp.heroku.com' }
und jetzt habe ich dies als Fehler, wenn ich versuche, einen Benutzer zu erstellen:
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'
quelle
:host => 'yourapp.heroku.com'
Dies sollte Ihre Domain sein. Wenn Ihre Domain beispielsweise yahoo.com ist, sollte dies der Fall sein,yahoo.heroku.com
oder wenn Sie bereits benutzerdefinierte Domains eingerichtet haben, ist dies nur Ihre URLyahoo.com
config.action_mailer.default_url_options = { :host => 'yourapp.herokuapp.com'
, im Gegensatz zu nurconfig.action_mailer.default_url_options = { :host => 'yourapp.heroku.com'
?OK,
Zuerst müssen Sie das sendgrid-Juwel mit dieser Befehlszeile installieren:
Dann müssen Sie nur noch env / dev.rb und env / prod.rb wie folgt konfigurieren:
env / dev.rb.
env / prod.rb
Push on Git und Heroku. Es sollte funktionieren..
quelle
method_missing': undefined method
action_mailer 'für # <Rails :: Application :: Configuration: 0x0000000241f760> (NoMethodError)Die Antwort von Codeglot oben macht den Job, aber wir wollten etwas flexibleres, also haben wir dies getan:
Auf Heroku führen wir mehrere Produktionsumgebungen zum Staging und Testen aus. Daher benötigen wir eine flexible Lösung für die Umgebungsdatei Production.rb.
In der Produktion.rb
Stellen Sie dann die Umgebungsvariable MAILER_URL für Ihre App wie folgt ein
quelle
Wenn Sie auf Cedar laufen :
Laufen Sie
heroku addons:add sendgrid:free
von Ihrer Konsole aus.Fügen Sie die folgenden Zeilen zu
config/environments/production.rb
Ihrer App hinzu..
quelle
Ich musste einige Dinge tun, damit es in der Produktionsumgebung funktioniert : In meiner
production.rb
Datei (/config/environments/production.rb) habe ich Folgendes hinzugefügt:Dies ist bei Rails 4 und Devise 3 der Fall
quelle
default_url_options
verursachte einen Fehler, der dazu führte, dass meine vorkompilierten Assets fehlschlugen, nur zu Ihrer Information. Als ich es wieder in `= {host: 'myappsname.herokuapp.com'}` änderte, funktionierte es.Die Arbeit nach so vielen Recherchen,
Vergessen Sie nicht, die Standardadresse von: E-Mail- Adresse in Ihrem ApplicationMailer (application_mailer.rb) als, hinzuzufügen
Fügen Sie die folgende Konfiguration in Ihre Produktion ein .
Aktivieren Sie IMAP in Ihren Google Mail-Einstellungen auf der Registerkarte IMAP / POP weiterleiten.
Zulassen weniger sicherer Apps: EIN unter https://myaccount.google.com/lesssecureapps
Du bist jetzt gut zu gehen. :) :)
quelle