我有一个用于RubyOnRails应用程序的rake任务文件,该文件位于lib / tasks目录中。运行[rake db:migrate VERSION = 0]似乎强制编译器检查lib / tasks文件中的语法。如果存在语法错误的文件,则[rake db:migrate]不会运行。为什么?那么如果我在lib / tasks中有一个错误的文件呢?这里发生了什么?感谢。
答案 0 :(得分:2)
当rake
运行时,它会在.rake
中加载所有lib/tasks
个文件,然后才会查找指示其运行的任务。它会加载所有文件,而不是在找到所需的任务时停止,因为稍后在加载顺序中文件可以覆盖任务。
您可以通过指定所需的rakefile来避免全部加载:
rake mytask --rakefile lib/my_task.rake
答案 1 :(得分:1)
当Rake运行时,它会自动加载.rake
文件夹中的所有lib/tasks
个文件。当它加载这些任务时,如果你有语法错误,它将被捕获。