'memcache-client'问题 - app无法加载gem

时间:2010-03-09 10:18:26

标签: ruby-on-rails ruby memcached

我正在尝试使用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-client:

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

gem位于/var/lib/gems/1.8中,它位于我的GEM_PATH变量中。

经过一番深入研究,上面的错误是在引用MemCache类时引发的,因为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

编辑 - 解决了

问题是我如何指定要使用的gem:我必须把它放在我的config / environment.rb文件中:

config.gem“memcache-client”,:version => '1.5.0',:lib => “内存缓存”

当我使用gems,其中lib文件夹未被称为lib或者lib文件夹中的主文件与gem名称不同时,这似乎是必要的:我必须指定lib /文件名:lib选项。

有点困惑,但至少它有效。

1 个答案:

答案 0 :(得分:0)

在memcache-client(http://github.com/mperham/memcache-client)的文档中,您可以看到:

  

Rails 2.1+包括开箱即用的memcache-client 1.5.0。有关更多详细信息,请参阅ActiveSupport :: Cache :: MemCacheStore和Rails.cache方法。 Rails 2.3+将使用最新安装的memcache-client gem。

也许这是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

你可以看到它现在有效。