为什么启动[rake db:migrate]运行语法检查lib / tasks目录中的rake任务?

时间:2009-03-04 16:00:56

标签: ruby-on-rails rake

我有一个用于RubyOnRails应用程序的rake任务文件,该文件位于lib / tasks目录中。运行[rake db:migrate VERSION = 0]似乎强制编译器检查lib / tasks文件中的语法。如果存在语法错误的文件,则[rake db:migrate]不会运行。为什么?那么如果我在lib / tasks中有一个错误的文件呢?这里发生了什么?感谢。

2 个答案:

答案 0 :(得分:2)

rake运行时,它会在.rake中加载所有lib/tasks个文件,然后才会查找指示其运行的任务。它会加载所有文件,而不是在找到所需的任务时停止,因为稍后在加载顺序中文件可以覆盖任务。

您可以通过指定所需的rakefile来避免全部加载:

rake mytask --rakefile lib/my_task.rake

答案 1 :(得分:1)

当Rake运行时,它会自动加载.rake文件夹中的所有lib/tasks个文件。当它加载这些任务时,如果你有语法错误,它将被捕获。