【发布时间】:2014-04-26 10:14:13
【问题描述】:
我想运行一个 rake 任务,但它抱怨没有设计密钥。我希望使用 task :mytask => :environment 定义任务会为我加载,但我需要在调用 rake 任务时指定它。
我将我的密钥保存在.env-production 中,通常获取文件然后导出DEVISE_SECRET_KEY。但我不想为了运行 rake 任务而输入 source .env-production && export DEVISE_SECRET_KEY && RAILS_ENV=production rake mytask。
我尝试像这样增强:environment 任务:
# lib/tasks/environment.rake
Rake::Task["environment"].enhance do
if Rails.env.production?
fn = ".env-production"
else
fn = ".env"
end
puts "Trying to read devise secret key from #{fn}"
match = File.read(fn).match /DEVISE_SECRET_KEY="(.*)"/
if match
Devise.secret_key = match[1]
ENV['DEVISE_SECRET_KEY'] = match[1]
puts "Found devise secret key"
else
puts "Couldn't find secret key"
end
end
但它仍然抱怨不知道密钥...有什么办法可以做到这一点?
【问题讨论】:
-
嗯,问题是增强似乎是在环境任务结束时添加的,在已经引发错误之后,这就是为什么它没有打印我的任何
puts'。
标签: ruby-on-rails devise rake environment-variables