簡體   English   中英

Ruby on Rails:奇怪的樣式表問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM