Sha256: 8e6ed19cae3110d3b549d0fc029f2791e6847b907625c0b817df0c8f98392fe5

Contents?: true

Size: 1.03 KB

Versions: 1

Compression:

Stored size: 1.03 KB

Contents

require "easy_presenter/version"
require "easy_presenter/base"
require "easy_presenter/railtie"

module EasyPresenter
  extend ActiveSupport::Concern

  included do
    include_easy_presenter
  end

  module ClassMethods
    def inherited(subclass)
      include_easy_presenter(subclass)
      super
    end

    protected
    def include_easy_presenter(klass=self)
      presenter_class = "#{klass}Presenter".safe_constantize
      if presenter_class
        presenter_class.extend ActiveSupport::Concern
        klass.send :include, presenter_class
        klass.send :include, Base
      end
      presenter_class
    end
  end

  # for the Presenter module only
  class << self
    def controller
      RequestStore.store[:presenter_controller]
    end

    def controller=(presenter_controller)
      RequestStore.store[:presenter_controller] = presenter_controller
    end
  end
end

if defined?(ActiveRecord::Base)
  ActiveRecord::Base.send :include, EasyPresenter
elsif defined?(Mongoid::Document)
  Mongoid::Document.send :include, EasyPresenter
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
easy_presenter-1.1.0 lib/easy_presenter.rb