Ruby on Rails: странная проблема с таблицей стилей - PullRequest
0 голосов
/ 01 августа 2010

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

[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, но безрезультатно. Что может быть причиной этой проблемы?

Это из чтения одного из официальных руководств .

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

1 Ответ

2 голосов
/ 13 сентября 2010

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

10.06.2010 03:19, Michael Pitman (mcp) отправлено :

Чтобы продолжить использовать Webrick, вместо переключения на Mongrel, вы также можете просто отредактировать строку 15 в lib / ruby ​​/ 1.8 / webrick / htmlutils.rb так, чтобы она прочитала

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

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

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

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

Michael

...