I can't access env variables in the Rails console, while in the application they work.
In .powenv
I have export SENDGRID_PASSWORD="123"
In config/initializers/mail.rb
there is:
ActionMailer::Base.smtp_settings = {
:password => ENV['SENDGRID_PASSWORD']
}
So in the console when I type UserMailer.welcome_mail.deliver
there is an error 'ArgumentError: SMTP-AUTH requested but missing secret phrase'. However from the application it sends the mail successfully.
How can I make the env variables available in the console?
Your Rails console isn't able to access the environment variable because Pow passes information from the .powenv
or .powrc
file into Rails ... Rails doesn't read those files on its own.
In other words, you're setting the ENV['SENDGRID_PASSWORD']
variable in the .powenv
file, but that file is not being touched when you start the Rails console.
You'll need to set up a before_filter
in your Application Controller that sets the ENV['SENDGRID_PASSWORD']
(or come up with another, similar, way of reading in the .powenv
file from within that before_filter
in your Rails app).
try
. .powenv
then
rails c
(dot is a command to run script on current environment)
For posterity, you can add something like this to either your environment.rb, development.rb, or an initializer (config/initializers/pow.rb) depending on what load order you want:
# 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
来源:https://stackoverflow.com/questions/10527372/environment-variable-in-rails-console-and-pow