Ruby on Rails:奇怪的样式表问题

时间:2010-08-01 12:00:54

标签: ruby-on-rails css webrick

当我打开一个使用我的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服务器,但没有效果。可能导致这个问题的原因是什么?

这是阅读one of the official guides

运行Mongrel时不会发生这种情况。

1 个答案:

答案 0 :(得分:2)

这是WEBrick中的一个错误,请参阅http://www.ruby-forum.com/topic/206225

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

  

继续使用Webrick,而不是   切换到Mongrel,你也可以   只需编辑第15行   lib / ruby​​ / 1.8 / webrick / htmlutils.rb to   读

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

问题在于NotModified   异常传递给   相反,HTMLUtils :: escape作为一个类   而不是一个字符串(最初在   HTTPServlet的:: DefaultFileHandler)。   既然唯一的事情可以真的   HTML转义是字符串,它应该   总是转换输入是安全的   字符串。

     

我怀疑潜力   性能惩罚可能会阻止   这样的解决方案从制作到   标准的ruby库,但它是一个   简单的解决方法。

     

或者,在handle_file中   webrick的DispatchServlet的方法   (lib / webrick_server.rb在rails中   gem),在调用res.set_error之前   除了你,你可以强迫   err.message是一个字符串,或   因为我认为,甚至清除了这个信息   无论如何它都被丢弃了   NotModified。

     

迈克尔