如何创建一个rake任务,该任务在运行任何Rake任务时始终运行?

时间:2012-05-23 12:42:44

标签: ruby-on-rails ruby rake

根据我的记忆,在文档中指定在测试环境中,即使运行rake(没有参数),数据库也总是被清除。我想实现这样的事情,所以无论我是否运行任务都没关系,当我运行rake时,总会执行一个Rake任务。这可能吗?这是默认任务开始的地方吗?

1 个答案:

答案 0 :(得分:2)

在要运行任务的目录中创建名为rakefile的文件。 这段代码将使它如果你只输入“rake”my_default_task将运行:

  task :default => 'my_default_task'

  task :my_default_task do
     puts "Now I am doing the task that Tempus wants done when he/she types 'rake' in the console."
  end

  task :my_not_default_task do
    puts "This isn't the default task."
  end

但是,如果您输入rake my_not_default_task,则my_default_task将无法运行。如果你想要它运行,不管这是你可以做的一件事:

task :default => 'my_default_task'

task :my_default_task do
    puts "This is the default task"
end

task :my_not_default_task do
  puts "This isn't the default task."
end

Rake::Task['my_default_task'].invoke

此代码中的最后一行确保my_default_task即使在您调用其他任务时也会运行,因此如果您键入rake my_not_default_taskmy_default_task'也会运行。

编辑: 当您使用rails时,您可以将上述任务放在lib/tasks文件夹中的文件中,扩展名为.rake,当您执行rake

Jason Seifer has a real nice tutorial on rake