当我打开一个使用我的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时不会发生这种情况。
答案 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。
迈克尔