class EacRubyUtils::CommonConcern::ModuleSetup

Attributes

a_module[R]
common_concern[R]

Public Class Methods

new(common_concern, a_module) click to toggle source
# File lib/eac_ruby_utils/common_concern/module_setup.rb, line 14
def initialize(common_concern, a_module)
  @common_concern = common_concern
  @a_module = a_module
end

Public Instance Methods

run() click to toggle source
# File lib/eac_ruby_utils/common_concern/module_setup.rb, line 19
def run
  a_module.extend(::ActiveSupport::Concern)
  include_or_prepend(:included, :include)
  include_or_prepend(:prepended, :prepend)
end

Private Instance Methods

a_module_method_args(module_method) click to toggle source
# File lib/eac_ruby_utils/common_concern/module_setup.rb, line 34
def a_module_method_args(module_method)
  method_arity = a_module.method(module_method).arity
  method_arity = -method_arity - 1 if method_arity.negative?
  method_arity.times.map { |_n| a_module }
end
include_or_prepend(module_method, class_setup_method) click to toggle source
# File lib/eac_ruby_utils/common_concern/module_setup.rb, line 27
def include_or_prepend(module_method, class_setup_method)
  setup = self
  a_module.send(module_method, *a_module_method_args(module_method)) do
    ::EacRubyUtils::CommonConcern::ClassSetup.new(setup, self, class_setup_method).run
  end
end