2012-03-19 2 views
11

У меня есть приложение Rails 3.1.3 и пытаюсь подключить к нему жемчужину «redis».Не удалось найти адаптер кэша для redis_store

Я добавил следующий камень в Gemfile:

жемчужина "Redis-магазин"

После этой статьи, я добавил следующий код в среде/development.rb:

config.gem "redis-store", :lib => "redis-store" 
require "redis-store" # HACK 
config.cache_store = :redis_store 

Приложение не запускается, жалуется на cache_store:

/gems/activesupport-3.1.3/lib/active_support/cache.rb:65:in `lookup_store ': не удалось найти адаптер хранилища кешей для redis_store (нет такого файла для загрузки - active_support/cache/redis_store) (RuntimeError).

Я понял это, в том числе драгоценных "Redis рельсах" вместо "Redis-магазин", но я получаю другую ошибку:

/Users/AntonAL/.rvm/gems/[email protected]/gems/bundler-1.0.21/lib/bundler/rubygems_integration.rb:143:in `gem': redis-store is not part of the bundle. Add it to Gemfile. (Gem::LoadError)

Держа их обоих ...

gem 'redis-store' 
gem 'redis-rails' 

... дает другую ошибку

…gems/redis-rails-0.0.0/lib/redis-rails/version.rb:1: Redis is not a module (TypeError) 
    from …/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:240:in `require' 
    from …/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:240:in `require' 
    from …/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:223:in `load_dependency' 
    from …/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:640:in `new_constants_in' 
    from …/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:223:in `load_dependency' 
    from …/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:240:in `require' 
    from …/gems/redis-rails-0.0.0/lib/redis-rails.rb:1 
    from …/gems/bundler-1.0.21/lib/bundler/runtime.rb:68:in `require' 
    from …/gems/bundler-1.0.21/lib/bundler/runtime.rb:68:in `require' 
    from …/gems/bundler-1.0.21/lib/bundler/runtime.rb:66:in `each' 
    from …/gems/bundler-1.0.21/lib/bundler/runtime.rb:66:in `require' 
    from …/gems/bundler-1.0.21/lib/bundler/runtime.rb:55:in `each' 
    from …/gems/bundler-1.0.21/lib/bundler/runtime.rb:55:in `require' 
    from …/gems/bundler-1.0.21/lib/bundler.rb:122:in `require' 
    from …/config/application.rb:11 
    from …/gems/railties-3.1.3/lib/rails/commands.rb:52:in `require' 
    from …/gems/railties-3.1.3/lib/rails/commands.rb:52 
    from …/gems/railties-3.1.3/lib/rails/commands.rb:49:in `tap' 
    from …/gems/railties-3.1.3/lib/rails/commands.rb:49 
    from script/rails:6:in `require' 
    from script/rails:6 

Помогите, пожалуйста!

ответ

9

попробовать

gem 'redis-store', '~> 1.0.0' 
+1

Спасибо, недавно я также нашел решение. Я могу указать версию «redis-store», которая соответствует версии моей среды рельсов. – AntonAL

+0

Blam! Спасибо тонну million.rand – Trip

9

FYI ... Я имел аналогичные проблемы, пока я не добавил все следующие моей Gemfile. Я запускаю Rails 3.2.3.

gem 'redis' 
    gem 'redis-store' 
    gem 'redis-rails' 
+8

У меня была аналогичная проблема с Rails 3.2.3. Я заменил 'gem 'redis-store''' gem' redis-rails'', и все было в порядке. – Ross

+1

Это избыточно - 'redis-rails' включает в себя два других драгоценных камня в качестве зависимостей – Yarin

0

Я предполагаю, что это то, что вы имели в виду в своем комментарии, AntonAL - это то, что работает для меня:

gem 'redis-rails', RAILS_VERSION # Where RAILS_VERSION matches the version of your rails gem 

не удается получить какой-либо проще, чем это :)

+1

То, что эти версии находятся в синхронизации, является совпадением. Определенно не рекомендуется использовать Gemfile. – jordanpg