业余红宝石在这里......
我有一组rake任务看起来像:
namespace :download do
task :only do
config = ActiveRecord::Base.configurations[Rails.env]
username = config['username']
password = config['password'] ? "-p#{config['password']}" : nil
end
task :environment do
config = ActiveRecord::Base.configurations[Rails.env]
username = config['username']
password = config['password'] ? "-p#{config['password']}" : nil
end
end
如何抽象'配置'逻辑(包含用户名和密码) 或者全球定义?
感谢您的帮助!
答案 0 :(得分:1)
完成任务后
def config
ActiveRecord::Base.configurations[Rails.env]
end
但你也可以
def username
config['username']
end
def password
config['password'] ? "-p#{config['password']}" : nil
end
答案 1 :(得分:0)
我认为@ b-7答案是明确的最佳选择,但您可以使用类似以下的元编程:
namespace :download do
task :only do
# just use username or password
end
task :environment do
# just use username or password
end
end
ActiveRecord::Base.configurations[Rails.env].each do |key, value|
define_method key do
value
end
end
BTW在我的测试中,我必须使用Rails.application.config.database_configuration[Rails.env]
而不是ActiveRecord::Base.configurations[Rails.env]