class AfterDo::Loader::Config

Attributes

config_path[R]

Public Class Methods

new(config_path) click to toggle source
Calls superclass method
# File lib/after_do/loader/config.rb, line 7
def initialize(config_path)
  @config_path = config_path
  super(parse_config)
end

Private Instance Methods

constantize_classes!(config_hash) click to toggle source
# File lib/after_do/loader/config.rb, line 27
def constantize_classes!(config_hash)
  config_hash['aspects'].each do |aspect|
    aspect['klass'] = AfterDo.const_get(aspect['klass'])

    aspect['advices'].each do |advice|
      advice['targets'].each do |target|
        target['klass'] = find_classes(target['klass'])
      end
    end
  end

  config_hash
end
find_classes(target) click to toggle source
# File lib/after_do/loader/config.rb, line 41
def find_classes(target)
  if target =~ />$/
    AfterDo.const_get(target.gsub(/\s+>$/, '')).subclasses
  else
    [AfterDo.const_get(target.gsub(/\s+>$/, ''))]
  end
end
parse_config() click to toggle source
# File lib/after_do/loader/config.rb, line 18
def parse_config
  config_hash = YAML.load_file(config_path)
  config = constantize_classes!(config_hash)

  RecursiveOpenStruct.new(config, recurse_over_arrays: true)
rescue
  raise Errors::InvalidConfig
end