У меня есть приложение направляющих с моделью, которая является своего рода репозиторием. Записи, сохраненные в DB для той модели, (почти) никогда не изменяются, но читаются все время. Также нет большого количества из них. Я хотел бы сохранить эти записи в кэше универсальным способом. Я хотел бы сделать что-то как acts_as_cached, но здесь являюсь проблемой, которую я имею:
Я не могу найти достойную документацию для действий, как кэшируется (и при этом я не могу найти, что это - репозиторий),
Я не хочу использовать memcached, но что-то более простое (статическая переменная или что-то как этот).
У Вас есть какая-либо идея того, какие драгоценные камни я мог использовать, чтобы сделать это?
Спасибо
Править
Я все еще ищу что-то подобное cache_flu, но без memcached
Вы можете хранить данные в кэше rails по умолчанию или, как кажется наиболее популярным выбором, использовать mem_cache_store, который использует memcached.
#production.rb
config.cache_store = :mem_cache_store, '127.0.0.1:11211', {:namespace => "production"}
#some_helper.rb
def get_some_data
Rails.cache.fetch('some_reference'){Model.find_some_data}
end
См. также: http://guides.rubyonrails.org/caching_with_rails.html
Также, если вы используете passenger, вам нужно сделать следующее:
if defined?(PhusionPassenger)
PhusionPassenger.on_event(:starting_worker_process) do |forked|
if forked
Rails.cache.instance_variable_get(:@data).reset if Rails.cache.class == ActiveSupport::Cache::MemCacheStore
else
# No need to do anything.
end
end
end
Не могли бы вы сохранить данные в файле и загрузить их в константу (как предлагается на Ruby on Rails: Talk ):
require "yaml"
class ApplicationController < ActionController::Base
MY_CONFIG = YAML.load(File.read(File.join(RAILS_ROOT, "config", "my_config.yml")))
end