我有一個Rails 2.3.4應用程序,看起來像一條線:Rails.cache.fetch,符號,和Memcached的
temp = Rails.cache.fetch(:temp_id) { User.find_by_name('Temp').id }
,一切工作正常,直到我決定換緩存層的memcached通過添加以下到我的environment.rb:
config.cache_store = :mem_cache_store
現在它用來做工精細的線條給我下面的錯誤:
undefined method 'length' for :temp_id:Symbol
/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.4/lib/active_support/vendor/memcache-client-1.7.4/memcache.rb:645:in 'get_server_for_key'
我明白這個錯誤,但我會想象這個常見的情況會很快被rails測試用例發現,所以我想知道如果我做錯了什麼。否則,我敢肯定,我可以monkeypatch這個問題將符號轉換爲字符串。
感謝
使用字符串鍵可能看起來像是明顯的解決方案,但令人沮喪的是,由於符號起初工作,所有我的緩存語句都使用符號。 在這一點上它只是更容易猴補丁,這樣的事情似乎工作: #這是能夠使用符號rails.cache 類MEMCACHE 高清get_server_for_key_with_symbols(鍵,選項= {}) 關鍵= key.to_s if key.is_a?符號 get_server_for_key_without_symbols(鍵,選項) 結束 alias_method_chain:get_server_for_key,:符號 結束 – gmoniey 2010-02-25 08:45:20
感謝清理我的猴子補丁的編輯。似乎你不能在評論中做造型。 說實話,我不想做一個項目範圍廣泛的搜索和替換的唯一原因是我覺得符號提供了更多的可讀性。顯然,這完全是個人偏好,並與我的代碼編輯器密切相關。 謝謝。 – gmoniey 2010-02-25 18:32:33
你也可以在**評論**中做*造型*。大多。 – Sai 2010-03-07 07:47:10