class EacRubyUtils::RequireSub

Attributes

file[R]
options[R]

Public Class Methods

new(file, options = {}) click to toggle source
# File lib/eac_ruby_utils/require_sub.rb, line 19
def initialize(file, options = {})
  @file = file
  @options = self.class.lists.option.hash_keys_validate!(options)
end

Public Instance Methods

apply() click to toggle source
# File lib/eac_ruby_utils/require_sub.rb, line 24
def apply
  require_sub_files
  include_modules
end

Private Instance Methods

active_support_require(path) click to toggle source
# File lib/eac_ruby_utils/require_sub.rb, line 31
def active_support_require(path)
  return false unless options[OPTION_REQUIRE_DEPENDENCY]

  ::Kernel.require_dependency(path)
  true
end
autoload_require(path) click to toggle source
# File lib/eac_ruby_utils/require_sub.rb, line 38
def autoload_require(path)
  return false unless base?

  basename = ::File.basename(path, '.*')
  return false if basename.start_with?('_')

  base.autoload ::ActiveSupport::Inflector.camelize(basename), path
  true
end
base() click to toggle source
# File lib/eac_ruby_utils/require_sub.rb, line 59
def base
  options[OPTION_BASE] || raise('Option :base not setted')
end
base?() click to toggle source
# File lib/eac_ruby_utils/require_sub.rb, line 63
def base?
  options[OPTION_BASE] ? true : false
end
include_modules() click to toggle source
# File lib/eac_ruby_utils/require_sub.rb, line 48
def include_modules
  return unless options[OPTION_INCLUDE_MODULES]

  base.constants.each do |constant_name|
    constant = base.const_get(constant_name)
    next unless constant.is_a?(::Module) && !constant.is_a?(::Class)

    base.include(constant)
  end
end
kernel_require(path) click to toggle source
# File lib/eac_ruby_utils/require_sub.rb, line 67
def kernel_require(path)
  ::Kernel.require(path)
end
require_sub_file(path) click to toggle source
# File lib/eac_ruby_utils/require_sub.rb, line 77
def require_sub_file(path)
  active_support_require(path) || autoload_require(path) || kernel_require(path)
end
require_sub_files() click to toggle source
# File lib/eac_ruby_utils/require_sub.rb, line 71
def require_sub_files
  Dir["#{File.dirname(file)}/#{::File.basename(file, '.*')}/*.rb"].sort.each do |path|
    require_sub_file(path)
  end
end