2012-05-10 4 views
6

Rails 콘솔에서 env 변수에 액세스 할 수 없습니다. .powenv에서Rails 콘솔과 Pow의 환경 변수

내가 config/initializers/mail.rb에서 export SENDGRID_PASSWORD="123"

을 가지고있다 : 콘솔에서 그래서

ActionMailer::Base.smtp_settings = { 
    :password => ENV['SENDGRID_PASSWORD'] 
} 

내가 거기에 오류가 UserMailer.welcome_mail.deliver를 입력 할 때 '하면 ArgumentError가 : SMTP-AUTH 요청이 있지만 비밀 문구 누락'. 그러나 응용 프로그램에서 메일을 성공적으로 보냅니다.

콘솔에서 env 변수를 사용하려면 어떻게해야합니까?

+0

명시 적으로 콘솔에서 설정해 보셨습니까? SENDGRID_PASSWORD = 123 && UserMailer.welcome_mail.deliver –

+0

아니요,이 방법도 작동하지 않습니다. –

+1

err 나는 의미 :'SENDGRID_PASSWORD = 123 레일스 콘솔' –

답변

4

귀하의 레일 콘솔 탕이 레일에.powenv 또는 .powrc 파일 정보 를 전달하기 때문에 환경 변수를 액세스 할 수 없습니다 ... 레일 자체에서 해당 파일을 읽지 않습니다.

다른 말로하면, .powenv 파일에 ENV['SENDGRID_PASSWORD'] 변수를 설정하고 있지만 레일즈 콘솔을 시작할 때 해당 파일을 건드리지 않아야합니다.

당신은 ENV['SENDGRID_PASSWORD']을 설정하여 응용 프로그램 컨트롤러에 before_filter를 설정 (또는 레일 앱에서 before_filter 내에서 .powenv 파일에 읽기의 또 다른 유사한 방법을 마련)해야합니다.

+0

"(또는 Rails 앱의 before_filter에서 .powenv 파일을 읽는 것과 비슷한 다른 방법을 생각해 내십시오.)"네, 정말 멋지군요. :) 어떤 아이디어? –

+0

Rails 앱에서'.powenv' 파일을 실제로 읽으려고하는지 알고 싶습니다. 매번 다시로드하기를 원하지 않거나 다시로드 할 필요가없는 다른 것들이 있기 때문입니다. –

+0

'.powenv' 파일이 슈퍼 클린이고 각 라인이 단지 환경 ​​변수를 설정하는 중이면,'before_filter'에서 줄 단위로 읽을 수 있습니다. 'before_filter'는 파일에서 읽어 오는 각 줄을 실행할 수 있습니다. ... 나는이 아이디어로 모든 종류의 잘못된 일들이 벌어지고 있음을 확신합니다 ... –

11

, 당신이 중 하나를 사용자의 환경에 이런 일을 추가 할 수 있습니다 후세를 들어

2

을 (점은 현재 환경에서 스크립트를 실행하는 명령입니다) 다음

rails c 

. .powenv 

을 시도합니다. rb, development.rb 또는 원하는로드 순서에 따라 이니셜 라이저 (config/initializers/pow.rb)를 입력하십시오.

 
# Load pow environment variables into development and test environments 
if File.exist?(".powenv") 
    IO.foreach('.powenv') do |line| 
    next if !line.include?('export') || line.blank? 
    key, value = line.gsub('export','').split('=',2) 
    ENV[key.strip] = value.delete('"\'').strip 
    end 
end