Sha256: 7832db34909547662412a99f01e0a95f9d4a4640f95cabd3bea8f36955880408

Contents?: true

Size: 933 Bytes

Versions: 1

Compression:

Stored size: 933 Bytes

Contents

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

module EasyPresenter
  extend ActiveSupport::Concern

  included do
    easy_presenter_subclass
  end

  module ClassMethods
    protected
    def easy_presenter_subclass
      presenter_class = "#{self}Presenter".safe_constantize
      if presenter_class
        presenter_class.extend ActiveSupport::Concern
        include presenter_class
        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.0.1 lib/easy_presenter.rb