Ошибка Ruby Sinatra Hello World в `remove_const’: постоянный URI:: WFKV_ не определен (ошибка имени)

#ruby #sinatra

#ruby #sinatra

Вопрос:

Просто пытаюсь запустить простой http-сервер и понятия не имею о ruby

 /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.3.5/lib/rack/backports/uri/common_192.rb:53:in `remove_const': constant URI::WFKV_ not defined (NameError)
    from /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.3.5/lib/rack/backports/uri/common_192.rb:53:in `<module:URI>'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.3.5/lib/rack/backports/uri/common_192.rb:19:in `<top (required)>'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.3.5/lib/rack/utils.rb:12:in `require'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.3.5/lib/rack/utils.rb:12:in `<top (required)>'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.3.5/lib/rack/request.rb:1:in `require'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.3.5/lib/rack/request.rb:1:in `<top (required)>'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.3.5/lib/rack/showexceptions.rb:3:in `require'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.3.5/lib/rack/showexceptions.rb:3:in `<top (required)>'
    from /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.3.1/lib/sinatra/showexceptions.rb:1:in `require'
    from /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.3.1/lib/sinatra/showexceptions.rb:1:in `<top (required)>'
    from /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.3.1/lib/sinatra/base.rb:12:in `require'
    from /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.3.1/lib/sinatra/base.rb:12:in `<top (required)>'
    from /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.3.1/lib/sinatra.rb:4:in `require'
    from /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.3.1/lib/sinatra.rb:4:in `<top (required)>'
    from http.rb:1:in `require'
    from http.rb:1:in `<main>'
  

и вот моя версия ruby на centos
ruby 1.9.1p376 (2009-12-07 revision 26041) [x86_64-linux]

любая помощь была бы очень признательна

Комментарии:

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

2. FWIW, я могу воспроизвести следующий код: require 'sinatra'

Ответ №1:

Это известная проблема, характерная для ruby-1.9.1 и rake-1.3.5. Пожалуйста, посмотрите на это. Как насчет обновления ruby до версии 1.9.2 или 1.9.3?

Обновить

С одной стороны, константа WFKV_ отсутствовала в версии ruby 1.9.1 и появляется в версии 1.9.2. С другой стороны, эта константа определена в файле uri/common_192.rb rack. 2011-10-03 Бен Хэмилл исправил проблему # 246 «Отключить предупреждение о переопределении этой константы из стандартной библиотеки» с помощью дополнительной remove_const :WFKV_ строки кода, и это исправление было включено в версию rack-1.3.5. Поэтому, если вы используете версию 1.9.1, вы должны использовать rack-1.3.4.

Комментарии:

1. я посмотрю на это и посмотрю, исправят ли это обновления … я использовал rpm, чтобы я мог скомпилировать из исходного кода