memcache错误键中的非法字符(Ruby 1.8.7 / Rails 2.3.9)

时间:2011-05-24 17:47:32

标签: ruby-on-rails memcached monkeypatching

我在我的一个rails应用程序[Ruby 1.8.7 + Rails 2.3.9]

中收到以下错误
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'

我用谷歌搜索,发现有人在http://www.coffeepowered.net/page/2/

有类似的问题

在该页面上提到,这应该有效:

class ActionController::Caching::Actions::ActionCachePath

    def path

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

    end

end

但我不知道我应该在哪里打字。所以我有两个问题:

  1. 如何解决手头的问题
  2. 我应该在哪里编写如上所述的代码,我们将覆盖Gem中定义的某些标准类或类。
  3. 任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

我认为您发现的帖子建议您使用该代码创建一个猴子补丁。使用这些内容在Rails.root + 'lib/'下创建一个文件,并确保在ActionController之后加载它(应该是默认值)。补丁将覆盖ActionController的默认代码。

你肯定想要这样的东西 - 我总是确保我的memcached密钥被散列。这使得它们更难以调试,但它可以防止这样的问题以及当有人为memcached创建一个太长的密钥时出现密钥长度溢出错误。