Превращение расширения ActiveRecord в гем
Это расширение создатьcache_find
метод для всех моделей приложения (я создал это с помощьюэта почта).
конфиг / active_record_extension.rb
require 'active_support/concern'
module ActiveRecordExtension
extend ActiveSupport::Concern
# add your instance methods here
def flush_find
Rails.cache.delete([self.class.name, :cached_find, id])
end
included do
after_commit :flush_find
end
module ClassMethods
def cached_find id
Rails.cache.fetch([self.name, :cached_find, id]) { self.find(id) }
end
end
end
# include the extension
ActiveRecord::Base.send(:include, ActiveRecordExtension)
Я превратил этот код в драгоценный камень и добавил к этомуСделки рЕПО.
Поэтому я хочу добавить эти методы динамически, что-то вроде этого:
class User << ActiveRecord::Base
# id, name, email, age...
cached :find, :find_by_name, :find_by_email
end
и приведенный выше код должен генерироватьcached_find
, flush_find
, cached_find_by_name
, flush_find_by_name
... Ты понял.
Мне нужна помощь, чтобы:
Контрольная работаRails.cache
методы вmodel_caching
драгоценный камень.Создать код для динамического добавления методов в модели приложений на основеcached
аргументы метода.Некоторые ссылки, которые мне помогли, но не встретились со всеми:
https://github.com/radar/guides/blob/master/extending-active-record.md
http://railscasts.com/episodes/245-new-gem-with-bundler
http://guides.rubyonrails.org/plugins.html
Не стесняйтесь клонировать и улучшатькод драгоценного камня.