升级到rails 4后,覆盖rake任务失败

时间:2014-05-12 14:38:22

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

我正在尝试将我的应用从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'

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

1 个答案:

答案 0 :(得分:2)

我能够通过添加

来解决这个问题
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