class DescendantsLoader::ClassFinder
Public Class Methods
class_name_from_path(path)
click to toggle source
# File lib/descendants_loader/class_finder.rb, line 12 def class_name_from_path(path) ary = path.split('/') ary.map! { |s| s.gsub(/\.rb/, '') } ary.slice!(0, index_of_base_dir(ary) + 1) ary.map(&:camelize).join('::') end
where_is(klass)
click to toggle source
# File lib/descendants_loader/class_finder.rb, line 4 def where_is(klass) find_related_source_files(klass).each do |f| return f if class_and_source_eq?(klass, f) end nil end
Private Class Methods
class_and_source_eq?(klass, file)
click to toggle source
# File lib/descendants_loader/class_finder.rb, line 46 def class_and_source_eq?(klass, file) class_name_from_path(file) == klass.to_s end
index_of_base_dir(path_array)
click to toggle source
# File lib/descendants_loader/class_finder.rb, line 50 def index_of_base_dir(path_array) base_dirs = %w(lib models workers schedulers controllers mailers) index = base_dirs.map { |dir| path_array.index(dir) }.compact.first fail ArgumentError, 'Not a valid file path. Expect to ' \ 'have a base known directory.' if index.nil? index end
list_class_methods(klass)
click to toggle source
# File lib/descendants_loader/class_finder.rb, line 34 def list_class_methods(klass) klass.methods(false).map { |m| klass.method(m) } end
list_instance_methods(klass)
click to toggle source
# File lib/descendants_loader/class_finder.rb, line 38 def list_instance_methods(klass) klass.instance_methods(false).map { |m| klass.instance_method(m) } end
list_methods(klass)
click to toggle source
# File lib/descendants_loader/class_finder.rb, line 28 def list_methods(klass) list_class_methods(klass) + list_instance_methods(klass) + list_private_methods(klass) end
list_private_methods(klass)
click to toggle source
# File lib/descendants_loader/class_finder.rb, line 42 def list_private_methods(klass) klass.new.private_methods(false).map { |m| klass.instance_method(m) } end