我正在尝试编写 Rails 3 rake
要生成的任务 config/initializers/secret_token.rb
.我想提取应用程序的名称而不是在 rake 任务中对其进行硬编码,但是 @app_name
尚未填充,也未填充 ENV['APP_NAME']
.这是任务的代码:
desc "Regenerate the server secret"
task :generate_secret do
include ActiveSupport
File.open('config/initializers/secret_token.rb', 'w') do |f|
f.puts "#{@app_name}::Application.config.secret_token = '#{SecureRandom.hex(30)}'"
end
end
除了
@app_name
之外,一切正常是空白。如何在此处检索应用程序名称?
最佳答案
您需要在 rake 任务中使用环境。那么你可以使用Rails.application.class.parent_name
desc "Regenerate the server secret"
task :generate_secret => :environment do
include ActiveSupport
File.open('config/initializers/secret_token.rb', 'w') do |f|
f.puts "#{Rails.application.class.parent_name}::Application.config.secret_token = '#{SecureRandom.hex(30)}'"
end
end
关于ruby-on-rails - 如何在 rake 任务中获取 Rails 应用程序名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7053235/