Method: ActiveTriples.class_from_string
- Defined in:
- lib/active_triples.rb
.class_from_string(class_name, container_class = Kernel) ⇒ Class
Converts a string for a class or module into a a constant. This will find classes in or above a given container class.
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/active_triples.rb', line 86 def self.class_from_string(class_name, container_class=Kernel) container_class = container_class.name if container_class.is_a? Module container_parts = container_class.split('::') (container_parts + class_name.split('::')) .flatten.inject(Kernel) do |mod, class_name| if mod == Kernel Object.const_get(class_name) elsif mod.const_defined? class_name.to_sym mod.const_get(class_name) else container_parts.pop class_from_string(class_name, container_parts.join('::')) end end end |