2016-07-30 15 views
2

Ich vermute, dass ich hier etwas Grundlegendes verpasse, aber mit diesem eine Weile ohne Glück gerungen habe.Errno :: ECONNREFUSED (Verbindung abgelehnt - connect (2) für Nil-Port 587): für Rails auf Heroku

Rails 4.2.5
Rubin 2.2.3p173

E-Mails senden Fein auf localhost Amazon SES (I this stellar guide gefolgt), aber nicht auf einer Produktionsumgebung Heroku. Ich erhalte den Fehler im Titel der Post:

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

ich den Kern des Problems vermuten, dass das nil da drin ist, aber ich habe nicht in der Lage gewesen, um herauszufinden, wo es herkommt. Niemand sonst scheint dieses Problem zu haben und selbst Debug-Level-Logs geben mir nichts mehr, mit dem ich arbeiten könnte.

Ich habe Dutzende von Posts wie this gelesen. Aber meine Konfigurationen stimmen mit allen Spezifikationen überein, soweit ich das beurteilen kann.

Jede Hilfe/Empfehlungen würde sehr geschätzt werden.

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

Klingt wie 'ENV ['SES_ADDRESS']' ist Null - Sind Sie sicher, dass die Umgebungsvariable gesetzt ist? –

+0

Können Sie den Ausgang dieses Befehls Telnet myappname.herokuapp.com 587 aus Ihrer Produktionsumgebung einfügen – error2007s

+0

Natürlich ... Sie sind 100% richtig @ FrederickCheung. Seit ich neue ENV-Variablen bei Heroku installiert habe, habe ich vergessen, dass ich Figaro benutze und "figaro heroku: set -e production" ausführen muss, um alles zu synchronisieren. Ich bin jetzt golden. Danke für den Vorschlag. Wenn du dich einreichen willst, akzeptiere ich - ansonsten akzeptiere ich alexandresaiz, da es eine ähnliche Beobachtung ist. –

Antwort

1

Ihre Umgebungsvariablen setzen, stellen Sie sicher, dass Ihr SES Endpunkt im Produktionsmodus ist und Sie sollten gut sein.