2010-03-09 5 views
1

J'essaie d'obtenir memcached et le plugin Interlock fonctionne avec une nouvelle application rails. La chose étrange est qu'ils fonctionnent tous les deux bien dans une autre application sur la même machine et je ne peux pas comprendre la différence qui arrête cette application. La nouvelle application est rails 2.3.4 et l'ancien est 2.2.2 dans le cas où c'est un facteur.Problème 'memcache-client' - l'application ne peut pas charger la gemme

Lorsque l'application démarre, je reçois un avertissement de verrouillage:

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

Maintenant, je suis memcache-client installé:

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

Le joyau est dans/var/lib/gemmes/1.8, qui est dans ma variable GEM_PATH.

Pour un peu plus d'investigations, l'erreur ci-dessus est déclenchée par un verrouillage quand il fait référence à la classe MemCache, qui n'existe pas et déclenche donc une erreur 'module anonyme'. Donc, finalement, le problème est que MemCache n'est pas chargé. J'ai un memcached.yml dans mon dossier de config (ci-dessous) cependant. Je suis coincé - un conseil n'importe qui?

#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 

EDIT - résolu

La question a été la façon dont je l'IPF précisant utiliser: je devais mettre dans mon fichier de configuration/environment.rb:

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

Cela semble être nécessaire lorsque j'utilise des gems où le dossier lib n'est pas appelé lib ou le fichier principal dans le dossier lib n'a pas le même nom que la gemme: je dois spécifier le nom de lib/fichier avec l'option: lib. Un peu confus à ce sujet encore, mais au moins cela fonctionne.

Répondre

0

Dans la documentation de memcache-client (http://github.com/mperham/memcache-client), vous pouvez voir:

Rails 2.1+ comprend memcache client 1.5.0 hors de la boîte. Voir ActiveSupport :: Cache :: MemCacheStore et la méthode Rails.cache pour plus de détails. Rails 2.3+ utilisera la dernière gem memcache-client installée.

Peut-être que c'est une incompatibilité entre Memcache 1.5.0 et 1.7.8. Vous pouvez essayer de désinstaller bijou memcache client 1.7.8 et installez-memcache client 1.5.0

gem uninstall memcache-client -v=1.7.8

gem install memcache-client -v=1.5.0

Vous pouvez le voir est fonctionne maintenant.

+0

Merci Shingara. J'ai maintenant désinstallé toutes les versions de memcache-client que j'avais et installé 1.5.0. Interlock est toujours en train de chier quand je démarre, avec la même erreur, c'est-à-dire que la classe MemCache n'est pas définie. Ai-je besoin de faire quelque chose dans les rails pour utiliser memcache-client, en plus d'avoir un fichier memcached.yml? Je ne le demande pas par exemple. merci, max –

+0

Vous utilisez le dernier plugin Interlock? – shingara

+0

C'est l'un de http://blog.evanweaver.com/files/doc/fauna/interlock/files/README.html Je l'ai fonctionné maintenant btw - voir la publication principale avec nouvelle édition. –

Questions connexes