0

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

4

1 回答 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'

现在,您运行时在生产环境 db 上执行的相同代码`RAILS_ENV='production' rake update_persons_table:import'已在开发环境 db 中运行

希望这足以让你开始

于 2013-05-31T20:33:36.270 回答