【问题标题】:Why does initation of [rake db:migrate] run syntax check on rake tasks in the lib/tasks directory?为什么启动 [rake db:migrate] 会对 lib/tasks 目录中的 rake 任务运行语法检查?
【发布时间】:2009-03-04 16:00:56
【问题描述】:

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

【问题讨论】:

    标签: ruby-on-rails rake


    【解决方案1】:

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

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

    rake mytask --rakefile lib/my_task.rake
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 你怎么知道的?是否有一些关于此的文档?
      • 它在 Rails 文档的某个地方。这是 Rails 使用的配置规则的约定之一。
      • 那么你是说当我运行 rails 附带的 rake 实用程序时,它是 rake 的一个版本,它已经过 tweeked 以提供与 rails 相关的约定?
      • Rails 自带的 Rake 不是一个不同的版本。应用根目录中的 Rakefile 指示 Rake 加载哪些文件。
      猜你喜欢
      • 2011-07-14
      • 1970-01-01
      • 2011-10-31
      • 2014-01-31
      • 1970-01-01
      • 1970-01-01
      • 2017-07-30
      • 2014-03-21
      • 2013-06-13
      相关资源
      最近更新 更多