2012-10-26 65 views
6

我將我的Sendgrid密碼設置在我用Figaro gem設置的外部文件(config/application.yml)中。這工作得很好我的本地機器上,但我的服務器上,我得到一個錯誤,沒有密碼已設置:生產服務器無法識別由Figaro設置的環境變量gem

ArgumentError (SMTP-AUTH requested but missing secret phrase) 

當我改變Sendgrid配置,只是它工作正常的明文密碼,所以我認爲Rails沒有識別環境變量。奇怪的是,當我進入rails console production並執行puts ENV["SENDGRID_PASSWORD"]它工作正常。

任何想法?

這裏是我的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

我得到使用ENV變量,在一個初始化設置相同的行爲,對象內(郵件程序文件)或主體(在視圖郵包)。它忽略了我設置的ENV變量,即使在緩存清除所有內容後,重新啓動服務器等等。但是,在控制檯中的值是正確的。不使用費加羅,不限於此。 – JosephK

回答

1

我有同樣的問題,無法弄清楚,爲什麼Rails的以爲我沒給它一個密碼。原來我在一個文件中定義了config.action_mailer.smtp_settings,然後在另一個文件中添加了key-value-combos。問題是我使用的是merge而不是merge!,所以我的密碼永遠不會將它變成smtp_settings,而是變成臨時哈希。

從這個經驗中,我得知你得到的錯誤信息是ActionMailer的方式:「密碼在哪裏?」

所以我的猜測是你的問題與Environment variable in Rails console and Pow相反,其中一個環境變量在Rails服務器上工作,但在Rails控制檯中沒有。嘗試執行:

$ echo "$SENDGRID_PASSWORD" 

並查看所得結果。我有一種感覺Env變量沒有設置,但它只是一個局部變量在Rails控制檯。

+0

得到了同樣的問題,但在我的情況下,原因是我在production.rb配置中使用icorrect鍵(符號) - ':user_password'而不是':password'。我的不好 –

-1

它應該是:認證=>「純」

+1

這應該是一條評論 –

相關問題