弄清楚rake如何工作以及如何在rails中的rake任务中处理命令行参数

问题描述 投票:0回答:1

如何将参数传递给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任务更新数据库中的表。但我希望能够在另一个数据库中的另一个克隆表上调用它。如何在命令行中传递参数?

ruby-on-rails ruby activerecord rake
1个回答
0
投票

如何将参数传递给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中运行

希望这足以让你开始

© www.soinside.com 2019 - 2024. All rights reserved.