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

Pal*_*ini 2 ruby rake ruby-on-rails ruby-on-rails-3

我正在做一个个人项目,我有一个奇怪的疑问。在本地主机上,我rake db:reset几乎每次都会这样做,并且总是需要运行另一个名为newsworker:create的任务(换句话说,我运行rake newsworker:create)。

我的问题是:

  1. 如何在每次之后执行特定的 rake 任务rake db:reset
  2. 我如何概括上述问题以处理rake db:create其他任务?

谢谢!

MrY*_*iji 5

在我看来,最好的方法是创建自己的 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
Run Code Online (Sandbox Code Playgroud)

并像这样使用它:

rake database:reset_and_create
Run Code Online (Sandbox Code Playgroud)