【问题标题】:Rake doc:rails errorsRake doc:rails 错误
【发布时间】:2011-05-29 20:27:54
【问题描述】:

尝试生成 Rails API 文档,但遇到错误:

$ rake doc:rails
rake aborted!
undefined method `task' for #<DummyApp::Application:0x00000100dd14d0>

(See full trace by running task with --trace)
MacBook-Pro-van-Joris-Ooms:dummy_app joris$ rake doc:rails --trace
rake aborted!
undefined method `task' for #<DummyApp::Application:0x000001023b1ea8>
/Users/joris/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.7/lib/rails/application.rb:215:in `initialize_tasks'
/Users/joris/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.7/lib/rails/application.rb:139:in `load_tasks'
/Users/joris/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.7/lib/rails/application.rb:77:in `method_missing'
/Users/joris/Desktop/Projects/Rails/dummy_app/Rakefile:7:in `<top (required)>'
/Users/joris/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.0/lib/rake/rake_module.rb:25:in `load'
/Users/joris/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.0/lib/rake/rake_module.rb:25:in `load_rakefile'
/Users/joris/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.0/lib/rake/application.rb:495:in `raw_load_rakefile'
/Users/joris/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.0/lib/rake/application.rb:78:in `block in load_rakefile'
/Users/joris/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.0/lib/rake/application.rb:129:in `standard_exception_handling'
/Users/joris/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.0/lib/rake/application.rb:77:in `load_rakefile'
/Users/joris/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.0/lib/rake/application.rb:61:in `block in run'
/Users/joris/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.0/lib/rake/application.rb:129:in `standard_exception_handling'
/Users/joris/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.0/lib/rake/application.rb:59:in `run'
/Users/joris/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.0/bin/rake:31:in `<top (required)>'
/Users/joris/.rvm/gems/ruby-1.9.2-p180/bin/rake:19:in `load'
/Users/joris/.rvm/gems/ruby-1.9.2-p180/bin/rake:19:in `<main>'

之前有类似的情况,我不得不将我的 Rake (0.9) 降级回 0.8.7。不过,我升级了我的宝石;我应该再次降级还是有办法解决这个问题并继续使用 Rake 0.9?

更新

降级到 Rake 0.8.7 后:

s$ rake doc:rails
(in /Users/joris/Desktop/Projects/Rails/dummy)
/Users/joris/.rvm/gems/ruby-1.9.2-p180@global/gems/rake-0.8.7/lib/rake.rb:32: warning: already initialized constant RAKEVERSION
/Users/joris/.rvm/gems/ruby-1.9.2-p180@global/gems/rake-0.8.7/lib/rake/alt_system.rb:32: warning: already initialized constant WINDOWS
WARNING: Possible conflict with Rake extension: String#ext already exists
WARNING: Possible conflict with Rake extension: String#pathmap already exists
/Users/joris/.rvm/gems/ruby-1.9.2-p180@global/gems/rake-0.8.7/lib/rake.rb:404: warning: already initialized constant EMPTY_TASK_ARGS
/Users/joris/.rvm/gems/ruby-1.9.2-p180@global/gems/rake-0.8.7/lib/rake.rb:452: warning: already initialized constant EMPTY
/Users/joris/.rvm/gems/ruby-1.9.2-p180@global/gems/rake-0.8.7/lib/rake.rb:960: warning: already initialized constant RUBY_EXT
/Users/joris/.rvm/gems/ruby-1.9.2-p180@global/gems/rake-0.8.7/lib/rake.rb:964: warning: already initialized constant RUBY
/Users/joris/.rvm/gems/ruby-1.9.2-p180@global/gems/rake-0.8.7/lib/rake.rb:1033: warning: already initialized constant LN_SUPPORTED
/Users/joris/.rvm/gems/ruby-1.9.2-p180@global/gems/rake-0.8.7/lib/rake.rb:1242: warning: already initialized constant ARRAY_METHODS
/Users/joris/.rvm/gems/ruby-1.9.2-p180@global/gems/rake-0.8.7/lib/rake.rb:1245: warning: already initialized constant MUST_DEFINE
/Users/joris/.rvm/gems/ruby-1.9.2-p180@global/gems/rake-0.8.7/lib/rake.rb:1249: warning: already initialized constant MUST_NOT_DEFINE
/Users/joris/.rvm/gems/ruby-1.9.2-p180@global/gems/rake-0.8.7/lib/rake.rb:1253: warning: already initialized constant SPECIAL_RETURN
/Users/joris/.rvm/gems/ruby-1.9.2-p180@global/gems/rake-0.8.7/lib/rake.rb:1259: warning: already initialized constant DELEGATING_METHODS
/Users/joris/.rvm/gems/ruby-1.9.2-p180@global/gems/rake-0.8.7/lib/rake.rb:1569: warning: already initialized constant DEFAULT_IGNORE_PATTERNS
/Users/joris/.rvm/gems/ruby-1.9.2-p180@global/gems/rake-0.8.7/lib/rake.rb:1575: warning: already initialized constant DEFAULT_IGNORE_PROCS
/Users/joris/.rvm/gems/ruby-1.9.2-p180@global/gems/rake-0.8.7/lib/rake.rb:1612: warning: already initialized constant FileList
/Users/joris/.rvm/gems/ruby-1.9.2-p180@global/gems/rake-0.8.7/lib/rake.rb:1638: warning: already initialized constant EARLY
/Users/joris/.rvm/gems/ruby-1.9.2-p180@global/gems/rake-0.8.7/lib/rake.rb:1968: warning: already initialized constant DEFAULT_RAKEFILES
rake aborted!
stack level too deep

使用@Zabba 的方法:

No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb, Rakefile.rb)

编辑 Rakefile 之后。

提前致谢!

【问题讨论】:

    标签: ruby-on-rails documentation rake


    【解决方案1】:

    Rake 0.9.0 有这个问题。 要修复它,请降级到 rake 0.8.7 或继续使用 rake 0.9.0 并在应用程序根目录的 Rakefile 中的 My_app_name::Application.load_tasks 之前添加以下内容:

    #in case there is an error "undefined method `task'", add this (rake 0.9.0 has this bug)
    module ::My_app_name
      class Application
        include Rake::DSL
      end
    end
    
    module ::RakeFileUtils
      extend Rake::FileUtilsExt
    end
    
    #code added above this line    
    My_app_name::Application.load_tasks
    

    【讨论】:

    • 谢谢。但是,有什么理由我不应该改用 0.8.7 吗? 0.9 比 0.8.7 提供的更多(除了,呃,错误)是什么?
    • 我必须在我的 Gemfile 中指定正确版本的 Rake gem。显然它使用的是 0.8.7,我不知何故无法卸载(给出错误..)。非常感谢!
    【解决方案2】:

    将其放入您的Gemfile,然后改用bundle exec rake

    gem 'rake', '0.8.7'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-06
      • 2013-03-06
      • 1970-01-01
      • 2017-03-19
      • 2014-09-28
      • 1970-01-01
      • 2013-03-12
      • 1970-01-01
      相关资源
      最近更新 更多