【问题标题】:Overriding rake task fails after upgrading to rails 4升级到 rails 4 后覆盖 rake 任务失败
【发布时间】:2014-05-12 14:38:22
【问题描述】:

我正在尝试将我的应用程序从 rails 3.2.18 升级到 rails 4.0,但我遇到了 rake 问题。

我有一个自定义 doc.rake 任务,它使用以下代码覆盖 doc:app,在 rails 3 上运行良好:

  # Replace Rails' rake doc:app with ours, which uses yardoc
  Rake::Task["doc:app"].clear.enhance do
    # Uses .yardopts_app file in rails root
    app_dir = 'doc/generated/app'
    sh "rm -rf #{app_dir}"
    sh "bundle exec yardoc --plugin rails --yardopts .yardopts_app"
    app_doc_files_dir = "#{app_dir}/doc-files"
    Dir.mkdir( app_doc_files_dir )
    cp_r( 'doc/files/app/doc-files/.', app_doc_files_dir )
  end

自从升级 rails 后,我尝试运行的任何 rake 任务都失败并出现错误:

rake aborted!
Don't know how to build task 'doc:app'

我真的不知道为什么会这样。我找不到对删除默认 doc:app 任务的 rails 4 的任何引用,因此它应该仍然存在供我覆盖。

【问题讨论】:

  • 我也有同样的问题。奇怪的是,它并非在每台机器上都可以重现。我的开发机器工作正常,但是我在登台服务器上遇到了该错误。运行 ruby​​ 2.1.1p76 和 rails 4.1。

标签: ruby-on-rails-4 rake yard


【解决方案1】:

我可以通过添加来解决这个问题

require 'rails/tasks'

到我的 rake 文件的顶部。所以我的完整 rake 文件现在看起来像这样:

require 'rdoc/task'
require 'rails/tasks'

Rake::Task["doc:app"].clear

namespace :doc do
  RDoc::Task.new('app') do |rdoc|
    ...
  end
end

【讨论】:

    猜你喜欢
    • 2014-05-31
    • 2016-09-20
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    • 2019-11-11
    • 2017-10-04
    • 1970-01-01
    • 2014-08-12
    相关资源
    最近更新 更多