如何在Rails 3中将OmniAuth与Memcache存储一起使用?

时间:2011-05-25 20:08:47

标签: ruby-on-rails memcached omniauth

我想将Memcache用于OmniAuth的商店,但我找不到任何关于如何做到这一点的例子。 Filesystem tmp不适用于我的主机。如何将下面的omniauth.rb中的代码转换为使用Memcache。我还需要任何额外的宝石来让Memcache工作吗?

谢谢!

目前omniauth.rb:

require 'openid/store/filesystem'
Rails.application.config.middleware.use OmniAuth::Builder do    
    provider :open_id, OpenID::Store::Filesystem.new('/tmp'), {:name => "google", :domain => "https://www.google.com/accounts/o8/id" }
end

1 个答案:

答案 0 :(得分:3)

我猜你是在Heroku,因为我也遇到了一些麻烦。我在Heroku上使用标准的Memcached库遇到了一些问题,虽然我不记得它们现在是什么。我最后使用Dalli,这在那里效果很好。

不幸的是,默认的ruby-openid不适用于Dalli作为客户端,并且似乎不再主动维护。我a fork同时修复了这个问题,也可以在Gemfile中使用。

无论如何,以下内容适合您:

初​​始化器:

require 'openid/store/memcache'

Rails.application.middleware.use OmniAuth::Builder do
  provider :open_id, OpenID::Store::Memcache.new(Dalli::Client.new), :name => 'google', :identifier => 'https://www.google.com/accounts/o8/id'
end

的Gemfile:

gem 'dalli', '1.0.2'
gem 'ruby-openid', :git => 'git://github.com/chanks/ruby-openid.git', :ref => '9ec3b76'

抱歉,我知道这很痛苦。如果您找到更好的解决方案,请告诉我们!