Rails 4.1 w / Heroku:DalliError:没有可用的服务器

时间:2014-04-13 20:00:31

标签: ruby-on-rails caching heroku memcached dalli

我正在使用:

  • Rails 4.1.0rc2
  • Heroku
  • gem 'memcachier'
  • gem 'dalli'

如果我从控制台使用缓存,它可以工作:

irb(main):010:0> Rails.cache.write("foo", "bar")
=> 1297036692682702848
irb(main):011:0> Rails.cache.read("foo")
=> "bar"

但是如果我在应用程序中使用Rails.cache.fetch设置缓存,并尝试通过控制台读取,我就明白了。

Rails.cache.read([School, "California", [], School.where(state: "California").all.map(&:updated_at).max, "city_filters"])
Dalli::Server#connect mc3.dev.ec2.memcachier.com:11211
Dalli/SASL authenticating as 451265
Dalli/SASL authenticating as 451265
Dalli/SASL: 451265
Dalli/SASL: 451265
=> [{:type=>"city", :value=>"San Francisco", :count=>11, :current=>false}]

但是当我在应用程序中运行它时,它每次都会进行新的搜索。

Completed 200 OK in 8481ms (Views: 1151.4ms | ActiveRecord: 246.6ms)

缓存在本地工作(它不是完整的缓存)。

Completed 200 OK in 655ms (Views: 244.5ms | ActiveRecord: 74.5ms)

如何让memcached / dalli工作?我有一个在不同的应用程序工作;对我而言似乎也是如此。

2 个答案:

答案 0 :(得分:1)

确保在heroku上配置memcachier插件并在您的环境中拥有其凭据(运行:heroku config)。还要确保你的memcachier& dalli gems没有嵌套在任何宝石组中,因此它们可以在生产中使用。

答案 1 :(得分:-4)

你在heroku上使用免费计划吗? 您可能需要在heroku上添加 dynos ,以提高应用程序在heroku上的处理速度。

结帐:https://devcenter.heroku.com/articles/dynos