2011-10-02 77 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现在不在了,它修正了这个警告。