Не удалось найти адаптер хранилища кеша для redis_store - PullRequest
13 голосов
/ 19 марта 2012

У меня есть приложение Rails 3.1.3 и я пытаюсь подключить к нему гем "redis".

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

камень "Редис-магазин"

После этой статьи я добавил следующий код в environment / 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: в `lookup_store ': не удалось найти адаптер хранилища кэша для redis_store (такой файл не загружается - active_support / cache / redis_store) ( RuntimeError).

Я понял это, включая гем "redis-rails" вместо "redis-store", но я получаю еще одну ошибку:

/Users/AntonAL/.rvm/gems/ree-1.8.7-2011.03@global/gems/bundler-1.0.21/lib/bundler/rubygems_integration.rb: 143: в `gem ': redis-store is не входит в комплект. Добавьте его в 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

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

Ответы [ 5 ]

9 голосов
/ 17 мая 2012

К вашему сведению ... У меня были похожие проблемы, пока я не добавил все следующее в свой Gemfile.Я использую Rails 3.2.3.

    gem 'redis'
    gem 'redis-store'
    gem 'redis-rails'
9 голосов
/ 25 марта 2012

попробуй

gem 'redis-store', '~> 1.0.0'
6 голосов
/ 15 февраля 2014

Это все, что вам нужно:

gem 'redis-rails' # Will install several other redis-* gems

(см .: https://github.com/redis-store/redis-rails)

2 голосов
/ 25 апреля 2018

Я столкнулся с подобной проблемой в приложении Rails 5.2.

Оказывается, проблема была с настройкой хранилища кеша в production.rb. Направляющие Rails указывают на использование config.cache_store = :redis_cache_store, { url: ENV['REDIS_URL'] }, но это не правильно.

Что сработало для меня:

В Gemfile

gem 'redis-rails', '~> 5'

В config/environments/production.rb

config.cache_store = :redis_store, ENV['REDIS_URL']
0 голосов
/ 14 июня 2012

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

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

Не может быть проще, чем это:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...