Heroku / devise-brak hosta do linkowania! Proszę podać: parametr host lub ustawić domyślne opcje url [: host]
[8]}próbuję wcisnąć aplikację na heroku. Nadal jestem w dev. Używam devise z modułem potwierdzającym.
Kiedy próbuję dodać użytkownika z konsolą heroku dostałem ten błąd:
Missing host to link to! Please provide :host parameter or set default_url_options[:host]
W środowisku test i dev mam następujący wiersz:
Środowiska / rozwój.rb i środowiska / test.rb
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
Nie ustawiłem czegoś w środowisku produkcyjnym.
Próbowałem pchać z
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..
I zobacz w sieci, że może to być związane z ActionMailer, ale nie wiem, co mam skonfigurować. Wielkie dzięki za pomysł!
Edycja:
Cześć,
Aby nie spowodować awarii aplikacji, gdy wciskam heroku, umieszczam to w moim ENV / teście.rb i mój env / dev.rb (Nie w env.rb myślę, że to dlatego, że jest to aplikacja rails 3)
config.action_mailer.default_url_options = { :host => 'yourapp.heroku.com' }
Ale kiedy próbowałem stworzyć 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 jakie mam:
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ę heroku logi na konsoli mam to = = > produkcja.log
Konfiguruję env / prod.RB jak to:
config.action_mailer.default_url_options = { :host => 'yourapp.heroku.com' }
A teraz mam to jako błąd przy próbie utworzenia 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'
7 answers
Musisz dodać to do swojego environment.rb
config.action_mailer.default_url_options = { :host => 'localhost' }
Upewnij się, że zmieniłeś host
na URL produkcji i zachowaj go localhost dla rozwoju. Jest to dla Mailera, potrzebuje domyślnej wiadomości e-mail do wysyłania powiadomień, takich jak potwierdzenia itp...
Powinieneś sprawdzić logi na serwerze heroku heroku logs
Uruchom to z konsoli i powie Ci dokładny błąd.
Po wciśnięciu do heroku musisz skonfigurować plik environment.rb
z heroku subdomena:
config.action_mailer.default_url_options = { :host => 'yourapp.heroku.com' }
W zależności od wersji, powinno to wejść production.rb
, a nie environment.rb
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-07 21:58:06
Ok,
Najpierw musisz zainstalować gem sendgrid za pomocą tej linii poleceń:
heroku addons:add sendgrid:free
Następnie wystarczy skonfigurować swój env / dev.rb i env / prod.rb jak to:
Env / dev.rb
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
Env/prod.rb
config.action_mailer.default_url_options = { :host => 'yourapp.heroku.com' }
Wciśnij Gita i heroku. Powinno zadziałać..Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-07 16:06:07
Powyższy anwser Codeglota robi to, co trzeba, ale chcieliśmy czegoś bardziej elastycznego, więc zrobiliśmy to:
W Heroku uruchamiamy wiele środowisk produkcyjnych do wystawiania i testowania, więc potrzebujemy elastycznego rozwiązania dla produkcji.plik środowiska RB.
W produkcji.rbconfig.action_mailer.default_url_options = { :host => ENV['MAILER_URL'] }
Następnie Ustaw zmienną środowiskową MAILER_URL dla Twojej aplikacji w ten sposób
heroku config:set MAILER_URL=my-awesome-app.herokuapp.com --app my-awesome-app
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-21 03:30:20
If you ' re running on Cedar:
Uruchom
heroku addons:add sendgrid:free
z konsoli.Dodaj następujące linie do
config/environments/production.rb
w aplikacji.
.
ActionMailer::Base.smtp_settings = {
:address => 'smtp.sendgrid.net',
:port => '587',
:authentication => :plain,
:user_name => ENV['SENDGRID_USERNAME'],
:password => ENV['SENDGRID_PASSWORD'],
:domain => 'heroku.com'
}
ActionMailer::Base.delivery_method = :smtp
config.action_mailer.default_url_options = { :host => 'YOUR-DOMAIN-HERE.COM' }
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-16 15:04:02
Musiałem zrobić kilka rzeczy, aby to działało w środowisku produkcyjnym :
Wewnątrz mojego pliku production.rb
(/config/environments / production.rb) dodałem co następuje:
Rails.application.routes.default_url_options[:host] = 'myappsname.herokuapp.com'
config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = false
config.action_mailer.default :charset => "utf-8"
To jest z Rails 4 i Devise 3
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-17 21:33:44
Oto sztuczka do rozważenia. Ułatwi to zmianę serwera i środowiska oraz zmianę domeny jak w niestandardowej domenie w heroku.
Zamiast kodowania na twardo nazwy hosta, odczytaj ją z żądania. Oto przykład prostej aplikacji, którą mam.
class MyMailController < ApplicationController
before_filter :set_host_from_request, only: [:create]
....
private
def set_host_from_request
ActionMailer::Base.default_url_options = { host: request.host_with_port }
end
end
W prostym przykładzie mam tylko jedną akcję, create, która powoduje wysłanie e-maili. Możesz dodać before_filter w application_controller.rb bez wyłączników, aby zawsze przechowywać hosta nazwisko.
PRO:
- zawsze otrzymuj poprawną nazwę hosta w adresie URL wiadomości e-mail, które wysyłasz
- mając default_url_options na naszym staging server skonfigurowany dla production , spowodowało to wysłanie e-maili do testowych użytkowników z linkami do produkcji (klikają je oczywiście). Bez uszkodzeń, ale bardzo czasochłonne.
CON:
Bez default_url_options nie można wysłać ręcznie w konsoli
#config.action_mailer.default_url_options = { :host => 'mydomain.com' }
$rails console
User.invite!(email: "[email protected]")
ActionView::Template::Error: Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true
...stacktrace
Jeśli widzisz wady, których nie mogę, Proszę się podzielić! Dzięki
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-22 20:54:48
Pracującego po tylu badaniach,]}
-
Nie zapomnij dodać domyślnego z adresu: mail w swoim ApplicationMailer (application_mailer.rb) as,
class ApplicationMailer < ActionMailer::Base default from: '[email protected]' layout 'mailer' end
-
Dodaj poniższą konfigurację w swojej produkcji .rb .
config.action_mailer.default_url_options = { :host => 'yourapp.herokuapp.com' } config.action_mailer.delivery_method = :smtp config.action_mailer.smtp_settings = { address: 'smtp.gmail.com', port: 587, domain: 'heroku.com', user_name: '[email protected]', password: 'yourgmailpassword', authentication: 'login', enable_starttls_auto: true }
Włącz IMAP z ustawień Gmaila w zakładce przekazywanie IMAP/POP .
Zezwalaj na mniej bezpieczne aplikacje: ON from https://myaccount.google.com/lesssecureapps
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-09 09:11:25