2011-10-02 78 views
33

試圖運行rake cucumber:ok,並正在此錯誤:耙「已初始化恆WFKV_」警告

/Users/dev/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/rack-1.3.4/lib/rack/backports/uri/common_192.rb:53: warning: already initialized constant WFKV_

然後:
Command failed with status (1): [/Users/dev/.rbenv/versions/1.9.2-p290/bin...]

我非常新的軌道和谷歌沒有爲這個錯誤打開任何東西。

編輯:我試過添加bundle exec,這沒有什麼區別。

這就是我與--trace有:

/Users/dev/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/rake-0.9.2/lib/rake/file_utils.rb:53:in `block in create_shell_runner' 
/Users/dev/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/rake-0.9.2/lib/rake/file_utils.rb:45:in `call' 
/Users/dev/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/rake-0.9.2/lib/rake/file_utils.rb:45:in `sh' 
/Users/dev/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/rake-0.9.2/lib/rake/file_utils_ext.rb:36:in `sh' 
/Users/dev/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/cucumber-1.1.0/lib/cucumber/rake/task.rb:104:in `run' 
/Users/dev/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/cucumber-1.1.0/lib/cucumber/rake/task.rb:193:in `block in define_task' 
/Users/dev/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/rake-0.9.2/lib/rake/task.rb:205:in `call' 
/Users/dev/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/rake-0.9.2/lib/rake/task.rb:205:in `block in execute' 
/Users/dev/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/rake-0.9.2/lib/rake/task.rb:200:in `each' 
/Users/dev/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/rake-0.9.2/lib/rake/task.rb:200:in `execute' 
/Users/dev/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/rake-0.9.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain' 
/Users/dev/.rbenv/versions/1.9.2-p290/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize' 
/Users/dev/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/rake-0.9.2/lib/rake/task.rb:151:in `invoke_with_call_chain' 
/Users/dev/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/rake-0.9.2/lib/rake/task.rb:144:in `invoke' 
/Users/dev/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/rake-0.9.2/lib/rake/application.rb:112:in `invoke_task' 
/Users/dev/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/rake-0.9.2/lib/rake/application.rb:90:in `block (2 levels) in top_level' 
/Users/dev/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/rake-0.9.2/lib/rake/application.rb:90:in `each' 
/Users/dev/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/rake-0.9.2/lib/rake/application.rb:90:in `block in top_level' 
/Users/dev/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/rake-0.9.2/lib/rake/application.rb:129:in `standard_exception_handling' 
/Users/dev/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/rake-0.9.2/lib/rake/application.rb:84:in `top_level' 
/Users/dev/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/rake-0.9.2/lib/rake/application.rb:62:in `block in run' 
/Users/dev/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/rake-0.9.2/lib/rake/application.rb:129:in `standard_exception_handling' 
/Users/dev/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/rake-0.9.2/lib/rake/application.rb:59:in `run' 
/Users/dev/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/rake-0.9.2/bin/rake:32:in `<top (required)>' 
/Users/dev/.rbenv/versions/1.9.2-p290/bin/rake:19:in `load' 
/Users/dev/.rbenv/versions/1.9.2-p290/bin/rake:19:in `<main>' 
Tasks: TOP => cucumber:ok 

回答

51

我開始今天晚上有同樣的問題。這似乎與Rack 1.3.4有關。我固定它通過增加這個我的Gemfile:

gem 'rack', '1.3.3' 

然後運行:

bundle update rack 

順便說一句,我想在此之前Bozhidar的建議,但無濟於事。

+6

感謝您指出。那麼我會刪除我的答案。 –

+14

根據common_192.rb中的註釋(「從ruby core的uri/common.rb @ 32618ba盜取修復1.9.2中的DoS問題」和「這應該可能會被刪除,一旦有一個包含此的Ruby 1.9.2修補程序級別修復「),看起來好像它被添加到機架上以防止拒絕服務攻擊。它故意monkeypatch在Ruby中的漏洞,但monkeypatch導致「已經初始化常量」警告。所以看起來好像選擇要麼按照Daniel的建議恢復到1.3.3,要麼得到修復並且忍受一段時間的警告。 –

+1

在我的情況下,警告是阻止了資產管道預編譯,因此恢復到1.3.3是唯一的選擇。 –

-1

所以,我包括:

需要'uri/common'; :: URI.send:remove_const,:WFKV_

但是它說「它將工作在Gemfile中」,其實應該讀的註釋「必須在Gemfile中。」

8

機架1.3.5現在不在了,它修正了這個警告。