class Junctions::Engine

Attributes

core[W]
junction_list[W]

Public Class Methods

activate(base, name) click to toggle source
# File lib/junctions/engine.rb, line 42
def activate(base, name)
  junction_classes.each { |junction_class| switch_to_junction(junction_class.classify, base, name) }
end
core() click to toggle source
# File lib/junctions/engine.rb, line 16
def core
  @core||='core'
end
junction_classes() click to toggle source
# File lib/junctions/engine.rb, line 12
def junction_classes
  junction_list.reverse
end
junction_list() click to toggle source
# File lib/junctions/engine.rb, line 8
def junction_list
  @junction_list||=get_initializer_roots('junctions')
end

Private Class Methods

get_initializer_roots(*args) click to toggle source
# File lib/junctions/engine.rb, line 21
def get_initializer_roots(*args)
  args.map do |arg|
    root=ENV[arg]
    root && root.split(',').map(&:squish) or nil
  end.flatten.compact << core
end
switch_to_junction(junction_class, base, base_name) click to toggle source
# File lib/junctions/engine.rb, line 28
def switch_to_junction(junction_class, base, base_name)
  name=base_name.gsub("#{core.classify}::", "#{junction_class}::")
  begin
    require(name.underscore)
    base.prepend name.constantize if name.gsub(/::[^:]*$/, '').constantize.const_defined?(name.demodulize)
  rescue NameError
  rescue LoadError
  rescue Exception => e
    puts(e.message)
    puts(e.backtrace)
  end unless base_name==name
end