class DirectoryOfClasses

Represents a source directory full of classe - e.g., lib/vincelifedaily/checks/*

Attributes

dir[R]
module_name[R]

Public Class Methods

new(dir: raise, class_suffix: '', module_name: '') click to toggle source
# File lib/quality/directory_of_classes.rb, line 19
def initialize(dir: raise, class_suffix: '', module_name: '')
  @dir = dir
  @class_suffix = class_suffix
  @module_name = module_name
end

Public Instance Methods

basenames() click to toggle source
# File lib/quality/directory_of_classes.rb, line 29
def basenames
  filenames.map { |filename| File.basename(filename) }
end
basenames_without_extension() click to toggle source
# File lib/quality/directory_of_classes.rb, line 33
def basenames_without_extension
  filenames.map { |filename| File.basename(filename, '.*') }
end
filenames() click to toggle source
# File lib/quality/directory_of_classes.rb, line 25
def filenames
  Dir.glob("#{dir}/**.rb").sort
end
require_classes() click to toggle source
# File lib/quality/directory_of_classes.rb, line 37
def require_classes
  basenames.each do |basename|
    path = "#{dir}/#{basename}"
    require_relative path
  end
end
symbols_and_classes() click to toggle source
# File lib/quality/directory_of_classes.rb, line 44
def symbols_and_classes
  @symbols_and_classes ||= filenames.map do |filename|
    basename = File.basename(filename, '.rb')

    class_name = "#{module_name}::#{basename.camelize}#{@class_suffix}"
    clazz = class_name.constantize
    symbol = basename.to_sym
    [symbol, clazz]
  end
end