2012-10-26 13 views
6

Ho la mia password di Sendgrid impostata in un file esterno (config/application.yml) che ho impostato con la gemma di Figaro. Questo funziona bene sulla mia macchina locale, ma sul mio server sto ottenendo un errore che la password non è stata impostata:Il server di produzione non riconosce le variabili di ambiente impostate da Figaro gem

ArgumentError (SMTP-AUTH requested but missing secret phrase) 

quando cambio la configurazione SendGrid alla sola password in chiaro funziona benissimo, quindi immagino che Rails non riconosce la variabile di ambiente. La cosa strana è che quando vado in rails console production ed eseguo puts ENV["SENDGRID_PASSWORD"] funziona bene.

Qualche idea?

Ecco il mio config SendGrid:

config.action_mailer.smtp_settings = { 
    :address    => "smtp.sendgrid.net", 
    :port     => 587, 
    :user_name   => "chrislawrence", 
    :password    => ENV['SENDGRID_PASSWORD'], 
    :domain    => "lakecinema.net.au", 
    :authentication  => :plain, 
    :enable_starttls_auto => true 
} 
+0

ottengo lo stesso comportamento utilizzando una variabile ENV, ambientato in un inizializzatore, all'interno del soggetto (nel file di mailer) o il corpo (in vista per mailer). Ignora la variabile ENV impostata, anche dopo aver cancellato la cache di tutto, riavviato il server, ecc. Tuttavia, il valore è corretto in Console. Non usando Figaro, quindi non limitato a quello. – JosephK

risposta

1

Ho avuto lo stesso problema e non riusciva a capire perché Rails pensato che non stava dando una password. Risulta che stavo definendo config.action_mailer.smtp_settings in un file, e poi aggiungendo il valore-chiave-combos ad esso in un altro file. Il problema è che stavo usando merge invece di merge! quindi la mia password non lo stava mai trasformando in smtp_settings ma in un hash temporaneo.

Da questa esperienza ho appreso che il messaggio di errore che si ottiene è il modo in cui ActionMailer dice "Dov'è la password?"

Quindi la mia ipotesi è che il problema sia l'inverso di Environment variable in Rails console and Pow, dove una variabile di ambiente funziona sul server Rails ma non in Rails Console. Prova a eseguire:

$ echo "$SENDGRID_PASSWORD" 

e vedere cosa ottieni. Ho la sensazione che la variabile Env non sia impostata ma che invece sia solo una variabile locale in Rails Console.

+0

Ho avuto lo stesso problema ma nel mio caso il motivo era che ho usato la chiave non corretta (simbolo) nella configurazione production.rb - ': user_password' invece di': password'. Il mio male –

-1

Dovrebbe essere: l'autenticazione => 'plain'

+1

Questo dovrebbe essere un commento –

Problemi correlati