Redis
 sql >> Database >  >> NoSQL >> Redis

Impostazione di cache_store in un inizializzatore

Dopo alcune ricerche, una probabile spiegazione è che l'inizializzatore initialize_cache viene eseguito molto prima che lo siano i rails/initializer. Quindi, se non è definito in precedenza nella catena di esecuzione, l'archivio cache non verrà impostato. Devi configurarlo all'inizio della catena, come in application.rb o environment/production.rb

La mia soluzione era spostare il caricamento di APP_CONFIG prima che l'app venisse configurata in questo modo:

APP_CONFIG = YAML.load_file(File.expand_path('../config.yml', __FILE__))[Rails.env]

e poi nello stesso file:

config.cache_store = :redis_store, APP_CONFIG['redis']

Un'altra opzione era mettere il cache_store in un blocco before_configuration, qualcosa come questo:

config.before_configuration do
  APP_CONFIG = YAML.load_file(File.expand_path('../config.yml', __FILE__))[Rails.env]
  config.cache_store = :redis_store, APP_CONFIG['redis']
end