2013-01-02 18 views
36

似乎這個問題的最後一篇文章因爲某種原因關閉了,所以我會盡我所能...錯誤:'rake/rdoctask'已過時,不再支持。使用'rdoc /任務'(在RDoc 2.4.2+中可用)而不是

我在嘗試運行一個簡單的「rake db:migrate」命令。當我這樣做時,我會在標題中看到錯誤。是的,解決方案「顯得」顯而易見,但這不是因爲我的Rakefile沒有包含任何對'rake/rdoctask'的引用。它似乎來自documentation.rake,但當我嘗試根據錯誤推薦更改該文件時,我得到一個不同的錯誤。我發現一些帖子宣稱這是一個已知的問題,但我沒有發現任何東西指示如何解決或解決此問題。

有沒有人有任何想法如何解決它?下面是從耙命令的輸出與--trace:

$ rake --trace db:migrate 
rake aborted! 
ERROR: 'rake/rdoctask' is obsolete and no longer supported. Use 'rdoc/task' (available in RDoc 2.4.2+) instead. 
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/rake-10.0.3/lib/rake/rdoctask.rb:1:in `<top (required)>' 
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/tasks/documentation.rake:2:in `require' 
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/tasks/documentation.rake:2:in `<top (required)>' 
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/tasks.rb:15:in `load' 
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/tasks.rb:15:in `block in <top (required)>' 
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/tasks.rb:6:in `each' 
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/tasks.rb:6:in `<top (required)>' 
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/application.rb:213:in `require' 
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/application.rb:213:in `initialize_tasks' 
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/application.rb:139:in `load_tasks' 
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/application.rb:77:in `method_missing' 
    C:/developer/skknobara/Rakefile:7:in `<top (required)>' 
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/rake-10.0.3/lib/rake/rake_module.rb:25:in `load' 
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/rake-10.0.3/lib/rake/rake_module.rb:25:in `load_rakefile' 
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/rake-10.0.3/lib/rake/application.rb:583:in `raw_load_rakefile' 
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/rake-10.0.3/lib/rake/application.rb:89:in `block in load_rakefile' 
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/rake-10.0.3/lib/rake/application.rb:160:in `standard_exception_handling' 
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/rake-10.0.3/lib/rake/application.rb:88:in `load_rakefile' 
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/rake-10.0.3/lib/rake/application.rb:72:in `block in run' 
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/rake-10.0.3/lib/rake/application.rb:160:in `standard_exception_handling' 
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/rake-10.0.3/lib/rake/application.rb:70:in `run' 
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/rake-10.0.3/bin/rake:33:in `<top (required)>' 
    C:/Programs/Ruby193/bin/rake:23:in `load' 
    C:/Programs/Ruby193/bin/rake:23:in `<main>' 

我發現我有軌3.0.3在我的Gemfile,所以我把它改成3.2.9,但現在當我運行耙分貝:遷移我得到:

rake aborted! 
Bundler could not find compatible versions for gem "rack": 
    In Gemfile: 
    rails (= 3.2.9) x86-mingw32 depends on 
     rack (~> 1.4.0) x86-mingw32 

    rack (1.2.5) 

我不知道什麼是錯誤的手段,但「創業板名單架」顯示我有兩個1.4.1和1.4.0安裝。我的Gemfile非常簡單:

gem 'rails', '3.2.9' 
gem 'rack','< 1.4.1' 
gem 'mysql2', '< 0.3' 

有什麼想法?

回答

2

我最近有類似的問題。

貌似爲同樣的問題:Can't run any rake command: "ERROR: 'rake/rdoctask' is obsolete and no longer supported"

我通過升級到Rails 3.2.9解決了這個問題。

+0

好吧,在添加最後一次編輯並多玩一會兒之後,我設法讓所有的版本都能正常工作,而且現在可以正常工作ING。看來我的問題是回到一個項目的組合,這個項目是使用舊版本的rails構建的,而且我自己對構建過程缺乏瞭解。學習很多......謝謝! – DaveR

61

我有類似的問題使用rails 2.3.5,以便跟蹤消息中的指示我編輯了Rakefile來要求'rdoc/task'而不是rake/rdoctask並安裝了rdoc gem。

如果您使用的是rake版本> 10.0.0。請編輯您的Rakefile

來自:

require 'rake' 
require 'rake/testtask' 
require 'rake/rdoctask' 
require 'tasks/rails' 

到:

require 'rake' 
require 'rake/testtask' 
require 'rdoc/task' 
require 'tasks/rails' 

如果你不想要編輯的Rake文件,你可以切換回舊版本採取這樣

gem uninstall rake -v 10.0.3 
gem install rake -v 0.8.7 
+0

試圖升級導軌2應用程序,準備升級到導軌3 - 並遇到這個問題,拉了一些頭髮後,我試了這個,它的工作!是啊! – rtfminc

+5

我在Rakefile中有'需要'rake''不是'rake/rdoctask'...我該如何解決這個問題?當我用'rdoc/task'替換'rake'時,現在有錯誤提示'沒有這樣的文件要加載 - rdoc /任務' – GiH

+0

我仍然收到錯誤,無法加載這樣的文件 - tasks/rails。你能幫我giridharbandi嗎? – Shyamkkhadka

22

我的舊應用程序遷移到rails 2.3.15時遇到了類似的問題。我解決它通過安裝耙的舊版本,並卸載當前版本10.0.3:

gem install rake --version 0.8.7 
gem uninstall rake --version 10.0.3 
+0

謝謝 - 只需要得到一箇舊的應用程序運行在2.3.5默認的rake gem是10.0.3。你的回答爲我解決了。 – Swards

+0

謝謝。它也拯救了我的屁股。 – divinedragon

+0

我刪除了通過APT安裝的舊版Rails和Rake。這些導致與使用寶石安裝的版本碰撞... 現在,所有似乎都工作得更順利! – CJBrew

1

這可能不是這樣做的正確的方式,但我走進我的Gemfile.lock的文件,並改變了我耙子版本從10.0.3回到0.8.7。我現在正在運行Rails 3.0.5,並在恢復之前暫時更新到3.0.19。我認爲,更新了一些寶石,也使它讓Rails的寶石在尋找到0.8.7的最新版本大於或等於:

rails (3.0.5) 
    actionmailer (= 3.0.5) 
    actionpack (= 3.0.5) 
    activerecord (= 3.0.5) 
    activeresource (= 3.0.5) 
    activesupport (= 3.0.5) 
    bundler (~> 1.0) 
    railties (= 3.0.5) 
railties (3.0.5) 
    actionpack (= 3.0.5) 
    activesupport (= 3.0.5) 
    rake (>= 0.8.7) 
    thor (~> 0.14.4) 
rake (0.8.7) 

我也卸載10.0。3:

gem uninstall rake --version 10.0.3 

之後,一切都恢復正常運行。

如果我沒有回滾rails 3.0.19,那麼我會一直使用rake 10.0.3。

希望這可以幫助別人!

+0

這工作,但相反卸載10.0.3我運行'捆綁執行耙分貝:遷移',它執行任務與0.8.7版本的寶石 – kode

1

像原來的海報,我沒有耙子/ rdoctask的要求。 升級我的導軌不是一個選項。答案是保持您的Gemfile中的0.9.2.2。

6

我不得不解決這個問題,而不是打破舊耙,但沒有安裝rdoc的地方。我加了一個開始......救援條款:

begin 
    require 'rake/rdoctask' 
rescue 
    require 'rdoc/task' 
end 
5

我遇到同樣的問題來了......我做了什麼 GiridharBandi上面提到:

require 'rake' 
require 'rake/testtask' 
require 'rake/rdoctask' 
require 'tasks/rails' 

到:

require 'rake' 
require 'rake/testtask' 
require 'rdoc/task' 
require 'tasks/rails' 

Rake版本10.0.4出現在gem列表中,但是當我嘗試卸載時,它表示沒有安裝rake。所以我忽略了這一點,並繼續安裝rake 0.8.7。一旦安裝,我安裝了rdoc

gem install rdoc 

<= 1.8.6 : unsupported 
= 1.8.7 : gem install rdoc-data; rdoc-data --install 
= 1.9.1 : gem install rdoc-data; rdoc-data --install 
>= 1.9.2 : nothing to do! Yay! 

然後一切開始工作就好了。

鋼軌3.0.6,用同一種錯誤:

ERROR: 'rake/rdoctask' is obsolete and no longer supported. Use 'rdoc/task' (available in RDoc 2.4.2+) instead. 

我安裝耙0.9.2和也的RDoc。將#require'tasks/rails'註釋掉,然後一切開始工作。我認爲rake問題已經在rails> 3.2.9中解決了。

7

我得到它通過把

寶石「耙」在我的Gemfile工作,「0.9.2.2」

,然後運行耙作爲

bundle exec rake db:migrate 
+0

這是對原始問題的答案。 user1143970運行rails 3.0,它沒有GiridharBandi描述的Rakefile條目(我不知道3.2)。此外,danijel的解決方案不起作用,至少它不適合我,因爲thor似乎對rake 10+有依賴性。我開始沿着Ben Atkin的路線走下去,但這很快就變得凌亂。我的猜測是@JstRoRR也運行着rails 3.0以外的東西。 – nerraga

1

我碰到這種每當我有一個基於Bundler的項目,我使用Ruby 1.9。 。最終我發現Bundler並沒有管理rdoc gem,爲了解決這個問題我只需要在Gemfile中包含rdoc(或者gemspec,如果Gemfile已經配置使用它)並運行bundle install

我似乎沒有遇到1.9.3或2.0.0,只有1.9.2。

0

哦,我的上帝,我與這個figting幾乎小時,終於在這裏是我的情況(可以幫助別人:)): 我給自己買了多個電源軌版本安裝 所以我卸載了最新的一個,因爲我想使用最尖銳的一個(4.0。1現在)

這樣:

$ gem uninstall rails 

,我得到這個:

Select gem to uninstall: 
1. rails-0.9.5 
2. rails-4.0.0 
3. rails-4.0.1 
4. All versions 
> 

,所以我選擇的前兩個,就是這樣:) 現在一切都OK 希望這可以幫助別人誰像我一樣神祕地卡住:(

+0

這只是在你的特殊情況下有所幫助。我遇到了同樣的問題,只運行一個單一的rails版本。 – thommyslaw

相關問題