Devise Confirmable продолжает отправлять localhost:3000 в производственном режиме
Я успешно настроил Devise Confirmable с аутентификацией Facebook, и все отлично работает в режиме разработки. Когда я нажимаю на heroku и запускаю в производственном режиме, приложение отправляет электронное письмо, но ссылка направляет меня на:
http://localhost:3000/users/confirmation?confirmation_token=E2jH_ehmHwqy2zyvJGcs
Если я заменю localhost:3000 на имя моего приложения, все работает.
В моем файле config/environment /production.rb у меня есть следующий код:
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = true
config.action_mailer.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => "gmail.com",
:user_name => ENV["GMAIL_USERNAME"],
:password => ENV["GMAIL_PASSWORD"],
:authentication => :plain,
:enable_starttls_auto => true
}
config.action_mailer.default_url_options = { :host => 'http://myapp.herokuapp.com' }
И в моем развитии я имею:
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = true
config.action_mailer.default_url_options = { :host => 'http://localhost:3000' }
config.action_mailer.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => "gmail.com",
:user_name => ENV["GMAIL_USERNAME"],
:password => ENV["GMAIL_PASSWORD"],
:authentication => :plain,
:enable_starttls_auto => true
}
Есть мысли о том, что делать? Я не мог найти прямой ответ нигде.
Я использую рельсы 4 и Devise 3.2.4
3 ответа
Значение хоста перезаписывается где-то в вашем приложении. Хорошее место для начала - ваш каталог инициализаторов. Как упоминалось в другом месте, проверьте setup_mail.rb под инициализаторами.
Перейдите в консоль Rails и проверьте вывод:
ActionMailer::Base.default_url_options[:host]
Попробуй это.
config.action_mailer.default_url_options = { host => 'your.herokuapp.com' }
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: "smtp.gmail.com",
port: 587,
domain: "gmail.com",
Authentication: "plain",
enable_starttls_auto: true,
user_name: your_username,
password: your_password
}
config.action_mailer.perform_deliveries = true
В production.rb
добавлять default_url_options
строка перед настройками smtp, а также host
не должен содержать http://
, только напишите домен, т.е. myapp.herokuapp.com
config.action_mailer.default_url_options = { :host => 'myapp.herokuapp.com' }
config.action_mailer.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => "gmail.com",
:user_name => ENV["GMAIL_USERNAME"],
:password => ENV["GMAIL_PASSWORD"],
:authentication => :plain,
:enable_starttls_auto => true
}