2012-05-10 17 views
6

No puedo acceder a las variables de env en la consola de Rails, mientras que en la aplicación que trabajan.Variable de entorno en la consola de Rails y Pow

En .powenv que tienen export SENDGRID_PASSWORD="123"

En config/initializers/mail.rb hay:

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

Así que en la consola cuando escribo UserMailer.welcome_mail.deliver hay un error 'ArgumentError: SMTP-AUTH pidió pero falta la frase secreta'. Sin embargo, desde la aplicación envía el correo con éxito.

¿Cómo puedo hacer que las variables env estén disponibles en la consola?

+0

¿Has intentado configurarlo explícitamente en la consola? SENDGRID_PASSWORD = 123 && UserMailer.welcome_mail.deliver –

+0

No, no funciona de esta manera también. –

+1

err Quise decir: 'SENDGRID_PASSWORD = 123 rails console' –

Respuesta

4

consola Sus rieles no es capaz de acceder a la variable de entorno porque Pow pasa información de el archivo .powenv o .powrcen Rieles ... Rieles no lee los archivos por su cuenta.

En otras palabras, está configurando la variable ENV['SENDGRID_PASSWORD'] en el archivo .powenv, pero ese archivo no se toca cuando inicia la consola de Rails.

Tendrá que establecer una before_filter en su Controlador de aplicación que establece el ENV['SENDGRID_PASSWORD'] (o llegar a otra, de forma similar, forma de leer en el archivo .powenv desde dentro de ese before_filter en su aplicación Rails).

+0

" (o inventar otra forma similar de leer en el archivo .powenv dentro de ese before_filter en su aplicación Rails) "Sí, eso sería fabuloso ... :) ¿Algunas ideas? –

+0

No sé si realmente quiere leer el archivo '.powenv' de su aplicación Rails, ya que podría haber otras cosas allí que no quiera/necesite volver a cargar cada vez. –

+0

Si su archivo '.powenv' está súper limpio y cada línea solo está configurando variables de entorno, entonces puede leerlo línea por línea dentro del' before_filter'. El 'before_filter' podría ejecutar cada línea que lee fuera del archivo. ... Estoy bastante seguro de que hay todo tipo de cosas equivocadas con esta idea, aunque ... –

11

tratar

. .powenv 

continuación

rails c 

(punto es un comando para ejecutar secuencias de comandos en entorno actual)

2

Para la posteridad, se puede añadir algo como esto ya sea a su medio ambiente. rb, development.rb o un inicializador (config/initializers/pow.rb) según la orden de carga que desee:

 
# 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 
Cuestiones relacionadas