Превращение расширения 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

Не стесняйтесь клонировать и улучшатькод драгоценного камня.

Ответы на вопрос(2)

Ваш ответ на вопрос