Ruby / Sinatra - уже инициализированная константа WFKV_ - PullRequest
3 голосов
/ 06 октября 2011

Запуск 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_

Я проверил Рейк "уже инициализированная константа WFKV_" предупреждение и попытался это исправить, но безуспешно.http://localhost:4567/ также ничего не производит.

Ответы [ 3 ]

6 голосов
/ 08 октября 2011

Это будет исправлено в стойке 1.3.5 и 1.4.0.

2 голосов
/ 06 октября 2011

Это предупреждение, а не ошибка. Вы можете спокойно проигнорировать это, и вы ничего не можете сделать, чтобы предотвратить его появление без редактирования исходного кода rack. Если предупреждение выдает ошибку, вы всегда можете временно отключить Ruby этим методом из Rails:

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...

Если это не сработает, то вы, вероятно, блокируете не ту часть кода. Поскольку стойка вызывает предупреждение, я предполагаю, что это происходит, когда стойка требуется впервые. Вероятно, это делается с помощью Синатры для вас, поэтому я говорил блокировать предупреждения на время, требующие синатры. Вы можете попробовать поместить остальные свои require в строки, расположенные рядом с require 'sinatra' в любом из вышеперечисленных.

0 голосов
/ 11 октября 2011

Простое исправление: gem 'rack', '1.3.3' (используйте предыдущую версию rack, и ошибка исчезнет.) Гораздо лучше, чем простое глушение.

...