我正在和朋友一起开发应用程序,但我在本地环境中遇到错误,但应用程序在线工作(使用Heroku)。我相信memcache在我的本地环境中引起了问题。这是我到目前为止所做的:
brew install memcached
然后我重新启动了我的应用程序并使用memcached -vv
运行了memcache进程。
当我访问该应用程序时,它工作正常。然后我会创建一个记录。这也很好。然后在页面重新加载 - 当从缓存中提取记录时,整个应用程序系统地失败。以下是我收到的错误(虽然我不确定它有多大帮助)
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.empty?
错误仅指向使用memcache的代码。简单的用户操作(即从公司购买书籍)会触发错误,一旦发生错误,整个应用程序就会被破坏(意味着任何路径都会导致相同的错误)。好像它只是没有存储/取出项目,这让我认为应用程序根本没有打到memcache ...我是否有可能安装一些东西 - 即使这在生产环境中正常工作另一个开发者的机器?
我正在寻找有关memcache故障排除的任何指导。更具体地说,有没有人遇到过关于memcache的本地与生产环境的问题?有什么建议?我已经考虑过在Heroku上从应用程序中删除memcache,然后在我的计算机上卸载它然后重做所有内容。
我知道我在这里相当模糊,但我不确定发布哪些代码会有所帮助。
感谢您的帮助。
答案 0 :(得分:1)
经过多次挫折后,我开始回顾我在本地环境中安装和实施memcache的步骤。它是如何在线工作和我朋友的环境而不是我的工作是没有意义的。最后我运行了bundle install
然后重新启动了应用程序并运行了一个新的memcached进程并修复了所有问题。我仍然有点困惑,但我想我的Gemfile
只是没有更新(尽管我可以发誓)。
答案 1 :(得分:0)
我在环境中使用memached没有任何问题,虽然我不使用Herouku。要访问memcached,我已经从https://github.com/mperham/dalli
安装了Dalli gem使用它很简单。 在文件environment.rb中添加:
DC = Dalli::Client.new('localhost:11211')
在我使用的应用程序中
DC.get(key)
DC.delete(key)
DC.set(key,value)
答案 2 :(得分:0)
首先,您需要测试您设置的按键是否实际设置。您可以使用Memcached via a Telnet interface对此进行测试。