Top Level Namespace

Defined Under Namespace

Modules: ActiveBehavior

Instance Method Summary collapse

Instance Method Details

#class_exists?(class_name) ⇒ Boolean

Returns:

  • (Boolean)


1
2
3
4
5
6
# File 'lib/active-behavior/loader.rb', line 1

def class_exists?(class_name)
  klass = Module.const_get(class_name)
  return klass.is_a?(Class)
rescue NameError
  return false
end

#define_module(name, &block) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/active-behavior/loader.rb', line 8

def define_module(name, &block)
  name = name.to_s.gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase }
  parts = name.split("::").select { |i| i != "" }
  parts.each_with_index do |part, index|
    class_name = parts[0..index].join("::")
    unless class_exists?(class_name)
      eval("module ::#{class_name}; unloadable ; end")
    else
      clazz = eval("::#{class_name}")
      clazz.unloadable if clazz.respond_to?(:unloadable)
    end
  end
  clazz = eval(name)
  #clazz.unloadable if clazz.respond_to?(:unloadable)
  clazz.class_eval(&block) if block_given?
  clazz
end