如何在每次db:reset之后执行“rake任务”

时间:2014-08-08 19:37:51

标签: ruby-on-rails ruby ruby-on-rails-3 rake

我正在从事个人项目,我有一个奇怪的疑问。在localhost,我几乎每次都rake db:reset,我总是需要运行另一个名为 newsworker:create 的任务(换句话说,我运行rake newsworker:create)。

我的问题是:

  1. 如何在每rake db:reset之后执行特定的佣金任务?
  2. 如何概括上述问题以使用rake db:create和其他任务?
  3. 谢谢!

1 个答案:

答案 0 :(得分:4)

在我看来,最好的方法是创建自己的rake任务,调用所需的所有任务(避免更改Rails / Rake基本任务):

# lib/tasks/reset_and_create
namespace :database do
  desc 'Reset the database to a fresh and clean DB ready for use'
  task :reset_and_create do
    Rake::Task['db:reset'].invoke
    Rake::Task['newsworker:create'].invoke
    # if you need to pass arguments to your tasks, use:
    # Rake::Task['your_task'].invoke(your_arg, another_arg)
  end
end

并像这样使用它:

rake database:reset_and_create