我正在尝试使用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选项。
有点困惑,但至少它有效。
答案 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
你可以看到它现在有效。