Как мне использовать OmniAuth с хранилищем Memcache в Rails 3? - PullRequest
2 голосов
/ 26 мая 2011

Я хотел бы использовать Memcache для магазина OmniAuth, но я не могу найти примеров того, как это сделать.Файловая система 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 Ответ

3 голосов
/ 26 мая 2011

Полагаю, вы на Heroku, так как у меня тоже были проблемы с этим.Я столкнулся с некоторыми проблемами при использовании стандартной библиотеки Memcached на Heroku, хотя я не помню, какими они были сейчас.Вместо этого я использовал Dalli , который прекрасно работает там.

К сожалению, ruby-openid по умолчанию не работает с Dalli как клиентом и не поддерживается в активном режиме.большеУ меня есть вилка , которая исправляет эту проблему и может использоваться в 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'

Извините, я знаю, что это боль.Если вы найдете лучшее решение, пожалуйста, дайте мне знать!

...