Próbuję przekazać moją aplikację na heroku. Nadal pracuję nad programami. Używam devise z potwierdzalnym modułem.
Kiedy próbuję dodać użytkownika za pomocą konsoli heroku, pojawia się ten błąd:
Missing host to link to! Please provide :host parameter or set default_url_options[:host]
w środowisku testowym i deweloperskim mam następującą linię:
environment / development.rb i environment / test.rb
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
Nie ustawiłem czegoś w środowisku produkcyjnym.
Próbowałem naciskać
config.action_mailer.default_url_options = { :host => 'mywebsitename.com' }
config.action_mailer.default_url_options = { :host => 'heroku.mywebsitename.com' }
ale to też nie działa.
Widzę w sieci, że może to być powiązane z ActionMailerem, ale nie wiem, co mam skonfigurować. Wielkie dzięki za Twój pomysł!
EDYTOWANO:
Cześć,
Aby nie powodować awarii mojej aplikacji, gdy naciskam na heroku, umieszczam to w moim env / test.rb i moim env / dev.rb (nie w env.rb, myślę, że dzieje się tak, ponieważ jest to aplikacja rails 3)
config.action_mailer.default_url_options = { :host => 'yourapp.heroku.com' }
Ale kiedy próbowałem utworzyć użytkownika w konsoli heroku:
User.create(:username => "test", :email => "[email protected]", :password => "test1234", :password_confirmation => "test1234", :confirmed_at => "2010-11-03 14:11:15.520128")
oto błędy, które otrzymałem:
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'
EDYTOWANE (2)
Kiedy wpisuję logi heroku na konsoli, otrzymuję to ==> production.log <== Więc myślę, że kiedy ktoś wdraża na heroku, jest już w produkcji.
Konfiguruję plik env / prod.rb w ten sposób:
config.action_mailer.default_url_options = { :host => 'yourapp.heroku.com' }
a teraz mam to jako błąd, kiedy próbuję utworzyć użytkownika:
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'
źródło
:host => 'yourapp.heroku.com'
to powinna być Twoja domena. Na przykład, jeśli Twoja domena to yahoo.com, powinna tak byćyahoo.heroku.com
lub jeśli już skonfigurowałeś domeny niestandardowe, będzie to po prostu Twój adres URLyahoo.com
config.action_mailer.default_url_options = { :host => 'yourapp.herokuapp.com'
, w przeciwieństwie do sprawiedliwegoconfig.action_mailer.default_url_options = { :host => 'yourapp.heroku.com'
?Dobrze,
Najpierw musisz zainstalować gem sendgrid za pomocą tego wiersza poleceń:
Następnie wystarczy skonfigurować pliki env / dev.rb i env / prod.rb w następujący sposób:
env / dev.rb
env / prod.rb
Wciśnij git i heroku. Powinno działać ..
źródło
method_missing': undefined method
action_mailer 'dla # <Rails:: Application :: Configuration: 0x0000000241f760> (NoMethodError)Powyższa odpowiedź Codeglot spełnia swoje zadanie, ale chcieliśmy czegoś bardziej elastycznego, więc zrobiliśmy to:
W Heroku uruchamiamy wiele środowisk produkcyjnych do testowania i testowania, więc potrzebujemy elastycznego rozwiązania dla pliku środowiska production.rb.
W produkcji.rb
Następnie ustaw zmienną środowiskową MAILER_URL dla swojej aplikacji w ten sposób
źródło
Jeśli biegasz na Cedar :
uruchomić
heroku addons:add sendgrid:free
z konsoli.Dodaj następujące wiersze do
config/environments/production.rb
w swojej aplikacji..
źródło
Musiałem zrobić kilka rzeczy, aby działał w środowisku produkcyjnym : Wewnątrz mojego
production.rb
pliku (/config/environments/production.rb) dodałem:Dotyczy to Rails 4 i Devise 3
źródło
default_url_options
spowodowała błąd, który spowodował, że moje zasoby prekompilacji zawiodły, po prostu fyi. Kiedy zmieniłem go z powrotem na `= {host: 'myappsname.herokuapp.com'}` działało.Pracujący po tylu badaniach,
Nie zapomnij dodać domyślnego adresu od: w swoim ApplicationMailer (application_mailer.rb) jako,
Dodaj poniższą konfigurację do pliku production.rb .
Włącz protokół IMAP w ustawieniach Gmaila na karcie Przekazywanie IMAP / POP .
Pozostawić mniej bezpieczne aplikacje: on z https://myaccount.google.com/lesssecureapps
Teraz możesz już iść. :)
źródło