【问题标题】:How can I create a rake task that will always run when any Rake task is ran?如何创建在运行任何 Rake 任务时始终运行的 rake 任务?
【发布时间】:2012-05-30 00:19:28
【问题描述】:

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

【问题讨论】:

    标签: ruby-on-rails ruby rake


    【解决方案1】:

    在您要运行任务的目录中创建一个名为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 时,rails 会自动运行它们

    Jason Seifer has a real nice tutorial on rake.

    【讨论】:

    • 当然可以,但是我如何才能让即使我调用 Rails 相关任务,我的任务也会运行?
    • @Tempus 我编辑了答案以回答您关于 Rails 中 rake 的问题。
    猜你喜欢
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 2012-11-15
    • 2010-09-23
    • 2013-09-06
    • 2011-05-10
    相关资源
    最近更新 更多