2016-07-30 3 views
2

Я подозреваю, что мне не хватает чего-то основного здесь, но боролся с этим на какое-то время, не повезло.Errno :: ECONNREFUSED (соединение отклонено - подключение (2) для порта nil 587): для Rails на Heroku

Rails 4.2.5
Рубин 2.2.3p173

Письмо отправляет штраф на localhost с помощью Amazon SES (я последовал this stellar guide), но не на производственной среду Heroku. Я получаю ошибку в названии поста:

Errno::ECONNREFUSED (Connection refused - connect(2) for nil port 587)

Я подозреваю, что суть проблемы в там nil, но я не мог понять, где он и откуда. У кого-то еще нет такой проблемы, и даже журналы уровня отладки не дают мне больше работать.

Я читал десятки сообщений вроде this. Насколько мне известно, мои конфигурации соответствуют всем спецификациям.

Любая помощь/рекомендации будут высоко оценены.

development.rb

# Devise 
    config.action_mailer.default_url_options = { host: 'localhost', port: 3000 } 

    # Configure mailer 
    config.action_mailer.delivery_method = :smtp 
    config.action_mailer.perform_deliveries = true 
    config.action_mailer.raise_delivery_errors = true 
    config.action_mailer.default :charset => "utf-8" 

    config.action_mailer.smtp_settings = { 
     :address => ENV['SES_ADDRESS'], 
     :port => 587, 
     :enable_starttls_auto => true, 
     :user_name => ENV['SES_ACCESS_KEY_ID'], 
     :password => ENV['SES_SECRET'], 
     :authentication => :login 
    } 

production.rb

# Devise 
    config.action_mailer.default_url_options = { :host => 'myappname.herokuapp.com'} 

    # Configure mailer 
    config.action_mailer.delivery_method = :smtp 
    config.action_mailer.perform_deliveries = true 
    config.action_mailer.raise_delivery_errors = true 
    config.action_mailer.default :charset => "utf-8" 

    config.action_mailer.smtp_settings = { 
     :address => ENV['SES_ADDRESS'], 
     :port => 587, 
     :enable_starttls_auto => true, 
     :user_name => ENV['SES_ACCESS_KEY_ID'], 
     :password => ENV['SES_SECRET'], 
     :authentication => :login 
    } 
+1

Звучит как 'ENV ['SES_ADDRESS']' is nil - вы уверены, что задана переменная окружения? –

+0

Можете ли вы наклеить эту команду telnet myappname.herokuapp.com 587 из вашей производственной среды – error2007s

+0

Конечно ... вы на 100% правы @FrederickCheung. Задолго до того, как я развернул новые переменные ENV для Heroku, я забыл, что я использовал Фигаро, и мне нужно было запустить 'figaro heroku: set -e production', чтобы синхронизировать все. Сейчас я золотой. Спасибо за предложение. Если вы хотите представить, я соглашусь - иначе я соглашусь с alexandresaiz, так как это аналогичное наблюдение. –

ответ

1

Установить переменные среды, убедитесь, что SES конечная точка находится в рабочем режиме, и вы должны быть хорошо.

Смежные вопросы