Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby/Sinatra-已初始化常量WFKV__Ruby_Rubygems_Sinatra - Fatal编程技术网

Ruby/Sinatra-已初始化常量WFKV_

Ruby/Sinatra-已初始化常量WFKV_,ruby,rubygems,sinatra,Ruby,Rubygems,Sinatra,运行ruby 1.9.2p290和最新版本的Sinatra 当我尝试运行我的Sinatra应用程序时 ruby application.rb 我犯了一个错误 C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/rack-1.3.4/lib/rack/backports/uri/common_192.rb:53: warning: already initialized constant WFKV_ 我签出并尝试了该修复,但没有成

运行ruby 1.9.2p290和最新版本的Sinatra

当我尝试运行我的Sinatra应用程序时

  ruby application.rb 
我犯了一个错误

  C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/rack-1.3.4/lib/rack/backports/uri/common_192.rb:53: warning: already initialized constant WFKV_

我签出并尝试了该修复,但没有成功。也不会产生任何结果。

这是一个警告,而不是错误。您可以安全地忽略它,如果不编辑
rack
源代码,您无法阻止它出现。如果警告使您出错,您可以始终使用Rails中的此方法暂时禁用Ruby:

def silence_stream(stream)
  old_stream = stream.dup
  stream.reopen(RbConfig::CONFIG['host_os'] =~ /mswin|mingw/ ? 'NUL:' : '/dev/null')
  stream.sync = true
  yield
ensure
  stream.reopen(old_stream)
end

silence_stream(STDERR) do
  silence_stream(STDOUT) do
    require 'sinatra'
  end
end

# rest of code as usual...
或者只阻止警告而不是整个stderr和stdout流:

verbose = $VERBOSE
$VERBOSE = nil
require 'sinatra'
$VERBOSE = verbose

# rest of code as usual...

如果这不起作用,那么您可能阻塞了错误的代码部分。由于rack导致了警告,我假设它发生在首次需要rack时。这可能是通过Sinatra为您完成的,这就是为什么我说在需要Sinatra的期间阻止警告。您可以尝试将其余的
require
s放在上述任何一个
require'sinatra'
旁边的行中。

这将在Rack 1.3.5和1.4.0中修复。

简单修复:gem'Rack',1.3.3'(使用Rack的早期版本,错误会消失。)比简单地沉默要好得多。

无论您当前在哪里
都包括'sinatra'
(删除该行并用上面的代码替换),因此,是的,我假设application.rb。不过,该警告不会引起任何问题,因此您可以让它保持原样,但由您决定。对不起,我不确定我在想什么-我的意思是
require
not
include
。编辑以修复此问题。是的,我尝试了更新的版本,但仍然没有成功。我的设置似乎有问题?刚刚更新了答案。也许Windows处理输出流重定向的方式不同(尽管似乎并不意味着如此)。第二种方法无论如何都应该有效,而且更整洁。是的,没有成功,这一定是我的设置有问题。这是一个坏主意,正如上面的一条评论所解释的。你最好的办法就是忽略警告。长话短说:rack 1.3.3存在1.3.4解决的拒绝服务攻击漏洞。