Проблема 'memcache-client' - приложение не может загрузить гем - PullRequest
1 голос
/ 09 марта 2010

Я пытаюсь получить memcached и плагин Interlock, работающий с новым приложением rails. Странно то, что оба они отлично работают в другом приложении на той же машине, и я не могу понять разницу, которая останавливает это приложение. Новое приложение - это rails 2.3.4, а старое - 2.2.2, если это важно.

Когда приложение запускается, я получаю предупреждение от блокировки:

`install_memcached':Interlock::ConfigurationError: 'memcache-client' client requested but not installed. Try 'sudo gem install memcache-client'.

Теперь у меня установлен memcache-клиент:

$> gem list | grep memcache
memcache-client (1.7.8)

гем находится в /var/lib/gems/1.8, который находится в моей переменной GEM_PATH.

В дальнейших исследованиях вышеупомянутая ошибка возникает из-за блокировки, когда она ссылается на класс MemCache, который не существует и вызывает ошибку «анонимный модуль». Итак, в конечном итоге, проблема в том, что MemCache не загружен. У меня есть memcached.yml в моей папке конфигурации (ниже), однако. Я застрял - любой совет кто-нибудь?

#contents of config/memcached.yml
defaults:
  namespace: millionaire
  #sessions: true
  sessions: false
  client: memcache-client
  with_finders: true
development:
  servers:
    - 127.0.0.1:11211
production:
  servers:
    - 127.0.0.1:11211

РЕДАКТИРОВАТЬ - решено

Проблема заключалась в том, как я определял гем для использования: мне пришлось поместить это в мой файл config / environment.rb:

config.gem "memcache-client",: version => '1.5.0',: lib => "memcache"

Это кажется необходимым, когда я использую гемы, где папка lib не называется lib или основной файл в папке lib не имеет того же имени, что и гем: мне нужно указать имя lib / file с помощью опция: lib.

В некотором роде все еще смущен, но, по крайней мере, это работает.

1 Ответ

0 голосов
/ 09 марта 2010

В документации к memcache-client (http://github.com/mperham/memcache-client) вы можете увидеть:

Rails 2.1+ включает в себя memcache-клиент 1.5.0 из коробки. См. ActiveSupport :: Cache :: MemCacheStore и метод Rails.cache для получения более подробной информации. Rails 2.3+ будет использовать последний установленный гем memcache-client.

Возможно, это несовместимость между Memcache 1.5.0 и 1.7.8. Вы можете попробовать удалить memcache-client gem 1.7.8 и установить memcache-client 1.5.0

gem uninstall memcache-client -v=1.7.8

gem install memcache-client -v=1.5.0

Вы можете видеть, что теперь это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...