2012-03-19 12 views
11

Ho l'app Rails 3.1.3 e provo a collegare la gemma "redis" ad essa.Impossibile trovare l'adattatore di memorizzazione cache per redis_store

Ho aggiunto seguente gioiello da Gemfile:

gemma "Redis-store"

A seguito di questo articolo, ho aggiunto seguente codice per ambienti/development.rb:

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

L'app non si avvia, denunciando a cache_store:

/gems/activesupport-3.1.3/lib/active_support/cache.rb:65: in `lookup_store ': impossibile trovare l'adattatore di memorizzazione cache per redis_store (nessun file di questo tipo da caricare - active_support/cache/redis_store) (RuntimeError).

ho capito, compreso gem "Redis-rails" invece di "Redis-store", ma sto ottenendo un altro errore:

/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)

Mantenere entrambi ...

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

... dà un altro errore

…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 

Aiuto, per favore!

risposta

9

provare

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

Grazie, recentemente ho anche trovato una soluzione. Potrei specificare la versione di "redis-store" che corrisponde alla versione del mio ambiente di rotaie. – AntonAL

+0

Blam! Grazie a tonnellate million.rand – Trip

9

FYI ... Ho avuto problemi simili fino a quando ho aggiunto tutti i seguenti alla mia Gemfile. Sono in esecuzione Rails 3.2.3.

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

Ho avuto un problema simile con Rails 3.2.3. Ho sostituito 'red 'redis-store' con 'gem' redis-rails 'e tutto era OK. – Ross

+1

Questo è ridondante- 'redis-rails' include le altre due gemme come dipendenze – Yarin

0

Presumo che ciò è quello che volevi dire nel tuo commento, AntonAL - questo è ciò che ha funzionato per me:

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

Non è possibile ottenere più semplice di quello :)

+1

Che queste versioni siano sincronizzate è una coincidenza. Sicuramente non è un modo consigliabile per usare un Gemfile. – jordanpg

Problemi correlati