2012-10-26 12 views
6

Mam ustawione hasło Sendgrid w pliku zewnętrznym (config/application.yml), który skonfigurowałem z klejnotem Figaro. Działa to dobrze na moim komputerze lokalnym, ale na moim serwerze Dostaję komunikat, że nie zostało ustawione hasło:Serwer produkcyjny nie rozpoznaje zmiennych środowiskowych ustawionych przez Gemę Figaro

ArgumentError (SMTP-AUTH requested but missing secret phrase) 

Kiedy zmienić config Sendgrid po prostu tekstu jawnego hasło to działa dobrze, więc zakładam, że Railsy nie rozpoznają zmiennej środowiskowej. Dziwne jest to, że kiedy wejdę w rails console production i wykonam puts ENV["SENDGRID_PASSWORD"], to działa dobrze.

Wszelkie pomysły?

Oto mój Sendgrid config:

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

uzyskać takie samo zachowanie przy użyciu zmiennej ENV, zestaw do inicjowania, w ramach przedmiotu (w pliku mailer) lub korpusu (ze względu na program pocztowy). Ignoruje ustawioną zmienną ENV, nawet po wyczyszczeniu pamięci podręcznej, ponownym uruchomieniu serwera itp. Wartość jest jednak poprawna w konsoli. Nie używanie Figaro, więc nie jest ograniczone do tego. – JosephK

Odpowiedz

1

miałem ten sam problem i nie mógł zrozumieć, dlaczego Szyny myślałem, nie nadając mu hasło. Okazuje się, że zdefiniowałem config.action_mailer.smtp_settings w jednym pliku, a następnie dodałem do niego kombinacje wartości klucz-wartość w innym pliku. Problem polega na tym, że używałam merge zamiast merge!, więc moje hasło nigdy nie wchodziło w ustawienia smtp_settings, ale zamiast tego w tymczasowy skrót.

Z tego doświadczenia dowiedziałem się, że komunikat o błędzie, który otrzymujesz, to sposób, w jaki ActionMailer mówi "Gdzie jest hasło?"

Zgaduję, że Twój problem jest odwrotnością Environment variable in Rails console and Pow, gdzie zmienna środowiskowa działa na serwerze Rails, ale nie w konsoli Rails. Spróbuj wykonać:

$ echo "$SENDGRID_PASSWORD" 

i zobacz, co otrzymasz. Mam wrażenie, że zmienna Env nie jest ustawiona, ale zamiast tego jest to tylko zmienna lokalna w konsoli Rails.

+0

Mam ten sam problem, ale w moim przypadku powodem było to, że użyłem icorrect key (symbol) w konfiguracji production.rb - ': user_password' zamiast': password'. Mój zły –

-1

Powinno być: uwierzytelnianie => „zwykły”

+1

To powinien być komentarz –

Powiązane problemy