为特定环境调用 rake 任务

Invoking rake task for specific environment

您好,我正在为我的迷你项目编写部署脚本(rake 任务)。当我调用数据库种子时,我有这部分:

Rake::Task['db:seed'].invoke

还有编译资产:

Rake::Task['assets:precompile'].invoke

所以我想知道是否有一种方法可以在生产环境中调用这些任务,就像您从这样的控制台中执行的那样:

RAILS_ENV=production rake db:seed

在Rails中,您可以这样做:

[arup@app (master)]$ rails g task my_namespace my_task1
      create  lib/tasks/my_namespace.rake
[arup@app (master)]$ cat lib/tasks/my_namespace.rake
namespace :my_namespace do
  desc "TODO"
  task my_task1: :environment do
  end
end
[arup@app (master)]$

现在看到 Rakefile 已经为您准备好了。

只需打开您刚刚创建的 Rakefile,然后定义您的任务。

namespace :my_namespace do
  task my_task1: :environment do
    Rake::Task['db:seed'].invoke
    Rake::Task['assets:precompile'].invoke
  end
end

提示是 2.10 Custom Rake Tasks