如何将参数传递给rake任务,以便它在不同的模式上执行rake任务?例如,我有rake代码,如下所示:
namespace :update_persons_table do
task :import => :environment do
config = Rails.configuration.database_configuration
ActiveRecord::Base.connection.schema_search_path = "my, public, data_master_reports"
# do stuff make updates to table....
end
end
我从命令行调用这个rake任务,如下所示:
RAILS_ENV='production' rake update_persons_table:import
顺便说一句,上面我正在使用的RAILS_ENV调用是否与我在第二行使用的:environment do
语句有关?因为在我的database.yml文件中,我确实有一个production:
数据库条目。我试图弄清楚整个管道是如何工作的。此rake任务更新数据库中的表。但我希望能够在另一个数据库中的另一个克隆表上调用它。如何在命令行中传递参数?
如何将参数传递给rake任务,以便它在不同的模式上执行rake任务?
我想你要问的是
如何将参数传递给rake任务,以便它在不同的环境中执行rake任务?
schema
适用于您应用的所有环境
上面我正在使用的RAILS_ENV调用与我在第二行使用的:environment do语句有关吗?
是的:environment do
将采用您指定的任何环境(:开发,:测试,生产)。在你的例子中,它的RAILS_ENV='production'
现在在不同的环境中运行rake任务,比如说开发环境
`RAILS_ENV='development' rake update_persons_table:import'
现在,在运行`RAILS_ENV='production' rake update_persons_table:import'
时在生产环境db上执行的相同代码已在开发环境db中运行
希望这足以让你开始