Модели кеширования в рельсах - PullRequest
1 голос
/ 17 июня 2010

У меня есть приложение rails с моделью, которая является своего рода хранилищем. Записи, хранящиеся в БД для этой модели, (почти) никогда не изменяются, но читаются постоянно. И их не так много. Я хотел бы хранить эти записи в кеше, в общем виде. Я хотел бы сделать что-то вроде act_as_cached, но у меня есть проблема:

  • Я не могу найти приличную документацию для действий как кэшированных (также я не могу найти это хранилище)

  • Я не хочу использовать memcached, но что-то попроще (статическая переменная или что-то в этом роде).

Есть ли у вас какие-либо идеи о том, какие драгоценности я мог бы использовать для этого?

Спасибо

EDIT

Я все еще ищу что-то похожее на cache_flu, но без memcached

Ответы [ 4 ]

1 голос
/ 28 августа 2011

Я запустил гем под названием cache_me, который может работать с любым cache_store

это в альфа-режиме, но вы можете попробовать, а затем открыть несколько запросов / проблем.

https://github.com/arunagw/cache_me

Я дам вам знать, когда он будет готов использовать полный режим.

1 голос
/ 23 июля 2010

Не могли бы вы сохранить данные в файле и загрузить их в константу (как предложено в 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
0 голосов
/ 18 июня 2010

Вы можете хранить данные в кэше по умолчанию для 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

Кроме того, если вы используете пассажира, вам нужно сделать следующее:

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
0 голосов
/ 18 июня 2010

acts_as_cached был заменен cache_fu .

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