Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Festlegen des cache_store in einem Initialisierer

Nach einiger Recherche ist eine wahrscheinliche Erklärung, dass der Initialisierer initialize_cache weit vor den Schienen/Initialisierern ausgeführt wird. Wenn es also nicht früher in der Ausführungskette definiert ist, wird der Cache-Speicher nicht festgelegt. Sie müssen es früher in der Kette konfigurieren, wie in application.rb oder environment/production.rb

Meine Lösung bestand darin, das Laden von APP_CONFIG zu verschieben, bevor die App wie folgt konfiguriert wird:

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

und dann in der gleichen Datei:

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

Eine andere Möglichkeit war, den cache_store in einen Block before_configuration zu setzen, etwa so:

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