Ошибка в memcache недопустимый символ в ключе (Ruby 1.8.7 / Rails 2.3.9) - PullRequest
1 голос
/ 24 мая 2011

Я получаю следующую ошибку в одном из моих приложений 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.

Буду признателен за любую помощь.

1 Ответ

1 голос
/ 25 мая 2011

Я думаю, что пост, который вы нашли, предлагает вам создать обезьяну-патч с этим кодом.Создайте файл в Rails.root + 'lib/' с этим содержимым и убедитесь, что он загружается после ActionController (который должен быть по умолчанию).Патч переопределит код ActionController по умолчанию.

Вы определенно хотите что-то подобное - я всегда гарантирую, что мои memcached ключи хэшированы.Это немного усложняет их отладку, но защищает от подобных проблем, а также от ошибок переполнения длины ключа, когда кто-то создает ключ, слишком длинный для memcached.

...