2010-08-01 4 views
0

Когда я открываю страницу, использующую мой CSS, она будет работать один раз, но не будет работать снова, пока вы не откроете CSS и не сохраните его. Каждый раз я пытаюсь напрямую получить доступ к CSS, он отлично работает. Но другие времена, он не работает, и я получаю этот выход сервера:Ruby on Rails: проблема с нечетной таблицей стилей

[2010-08-01 12:49:37] ERROR NoMethodError: private method `gsub!' called for #<Class:0x7f6d0639ad80> 
    /usr/lib/ruby/1.8/webrick/htmlutils.rb:16:in `escape' 
    /usr/lib/ruby/1.8/webrick/httpresponse.rb:232:in `set_error' 
    /var/www/rails-blog/vendor/rails/railties/lib/webrick_server.rb:94:in `handle_file' 
    /var/www/rails-blog/vendor/rails/railties/lib/webrick_server.rb:73:in `service' 
    /usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service' 
    /usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run' 
    /usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread' 
    /usr/lib/ruby/1.8/webrick/server.rb:162:in `start' 
    /usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread' 
    /usr/lib/ruby/1.8/webrick/server.rb:95:in `start' 
    /usr/lib/ruby/1.8/webrick/server.rb:92:in `each' 
    /usr/lib/ruby/1.8/webrick/server.rb:92:in `start' 
    /usr/lib/ruby/1.8/webrick/server.rb:23:in `start' 
    /usr/lib/ruby/1.8/webrick/server.rb:82:in `start' 
    /var/www/rails-blog/vendor/rails/railties/lib/webrick_server.rb:60:in `dispatch' 
    /var/www/rails-blog/vendor/rails/railties/lib/commands/servers/webrick.rb:66 
    /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' 
    /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `require' 
    /var/www/rails-blog/vendor/rails/activesupport/lib/active_support/dependencies.rb:153:in `require' 
    /var/www/rails-blog/vendor/rails/activesupport/lib/active_support/dependencies.rb:521:in `new_constants_in' 
    /var/www/rails-blog/vendor/rails/activesupport/lib/active_support/dependencies.rb:153:in `require' 
    /var/www/rails-blog/vendor/rails/railties/lib/commands/server.rb:49 
    /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' 
    /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `require' 
    script/server:3 
127.0.0.1 - - [01/Aug/2010:12:49:37 BST] "GET /stylesheets/scaffold.css HTTP/1.1" 500 343 
- -> /stylesheets/scaffold.css?1280662371 

код, я использую, чтобы включить таблицы стилей <%= stylesheet_link_tag 'scaffold' %>. Я перезапустил сервер Ruby, но без эффекта. Что может вызвать эту проблему?

Это результат чтения one of the official guides.

Этого не происходит при запуске Mongrel.

+0

Какая версия Rails вы используете здесь? – pjmorse

+0

@pjmorse: 2.2.3-2 (Ubuntu 10.04). – Zaz

ответ

2

Это ошибка в WEBrick, см. http://www.ruby-forum.com/topic/206225.

On 10.06.2010 03:19, Michael Pitman (mcp) posted:

Чтобы продолжить использование WEBrick вместо переключения на Барбос, вы можете также просто линия редактирования 15 из Библиотека/рубин/1,8/WEBrick/htmlutils.rb для чтения

str = string ? string.to_s.dup : "" 

проблема заключается в том, что NotModified исключение становится передается HTMLUtils :: бежать как класс, а , чем строка (первоначально поднятая в HTTPServlet :: DefaultFileHandler). Так как единственные вещи, которые могут на самом деле быть HTML escaped, это строки, он должен быть в безопасности, чтобы всегда преобразовывать вход в строку.

Я подозреваю, что потенциальный штраф производительность может предотвратить решение, как, что с делает его стандартной библиотеки рубин, но это простой обходной путь.

В качестве альтернативы, в handle_file методом WEBrick в DispatchServlet (Lib/webrick_server.rb в рельсах гем), перед вызовом res.set_error за исключением, вы можете заставить в err.message быть строка, или , даже очистите сообщение, так как я думаю, он отброшен в любом случае для NotModified.

Майкл

 Смежные вопросы

  • Нет связанных вопросов^_^