2011-05-24 24 views
1

我收到以下錯誤在我的Rails應用程序之一[紅寶石1.8.7 + Rails的2.3.9]內存緩存錯誤非法字符鍵(紅寶石1.8.7/2.3.9的Rails)

A ArgumentError occurred in home#dashboard: 
illegal character in key "dashboard_prod:views/reports/1050 - 097" 
/opt/ruby-enterprise/lib/ruby/gems/1.8/gems/activesupport-2.3.9/lib/active_support/vendor/memcache-client-1.7.4/memcache.rb:643:in `get_server_for_key' 

我用Google搜索,發現有人在過類似的問題:http://www.coffeepowered.net/page/2/

該網頁時被提及,這應該工作:

class ActionController::Caching::Actions::ActionCachePath 

    def path 

     @cached_path ||= Digest::SHA1.hexdigest(@path) 

    end 

end 

但我不知道我應該在哪裏鍵入此。所以,我有兩個問題:

  1. 如何在手
  2. 我應該在哪裏寫象上面的代碼中我們覆蓋一些標準類或類的寶石定義解決問題。

任何幫助,將不勝感激。

+0

正如我期待的錯誤是由於空間在1050年 - 097 [dashboard_prod:views/reports/1050 - 097] ...我刪除了空格[1050-097 =>這實際上是一個郵政編碼,應用程序顯示一些基於郵政編碼的報告],一切工作正常。但我真的很想知道如何進行哈希路徑工作,因爲我認爲我可以再次遇到一些問題。如果我的客戶再次輸入空間怎麼辦?誰知道其他角色不會與memcached一起工作。 – RubyDev 2011-05-24 19:58:00

回答

1

我認爲你發現的帖子建議你用該代碼創建一個猴子補丁。使用這些內容在Rails.root + 'lib/'下創建一個文件,並確保它在ActionController(它應該是默認值)之後加載。該補丁將覆蓋ActionController的默認代碼。

你絕對想要這樣的東西 - 我總是確保我的memcached密鑰被哈希。它使它們更難於調試,但它可以防止類似這樣的問題,以及在有人創建對memcached來說太長的密鑰時發生密鑰長度溢出錯誤。

+0

是的,在帖子中確實提到需要猴子補丁。萬分感謝! – RubyDev 2011-05-25 09:35:01