[英]Ruby on Rails: odd stylesheet issue
當我打開使用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時不會發生這種情況。
這是WEBrick中的錯誤,請參閱http://www.ruby-forum.com/topic/206225 。
在10.06.2010 03:19,Michael Pitman(mcp)發表 :
要繼續使用Webrick,而不是切換到Mongrel,您還可以只編輯lib / ruby / 1.8 / webrick / htmlutils.rb的第15行以讀取
str = string ? string.to_s.dup : ""
問題是NotNotified異常作為類而不是字符串(最初在HTTPServlet :: DefaultFileHandler中引發)作為類傳遞給HTMLUtils :: escape。 由於真正可以通過HTML進行轉義的唯一東西是字符串,因此始終將輸入轉換為字符串應該是安全的。
我懷疑潛在的性能損失可能會阻止類似的解決方案進入標准的ruby庫,但這是一個簡單的解決方法。
或者,在webrick的DispatchServlet的handle_file方法(rails gem中為lib / webrick_server.rb)中,在異常調用res.set_error之前,您可以將err.message強制為字符串,甚至清除消息,因為我認為它還是被NotModified丟棄了。
邁克爾
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.