Sha256: 32d24dee999017ef4b9762ce49bfabd2ef08a7c5b01e4758f746bb7e94a64bea
Contents?: true
Size: 1.11 KB
Versions: 1
Compression:
Stored size: 1.11 KB
Contents
require 'pathname' require 'rom/support/constants' require 'rom/support/inflector' require 'rom/support/options' module ROM class AutoRegistration include Options option :namespace, reader: true, type: [TrueClass, FalseClass], default: true attr_reader :globs, :directory def initialize(directory, options = EMPTY_HASH) super @directory = Pathname(directory) @globs = Hash[[:relations, :commands, :mappers].map { |name| [name, @directory.join("#{name}/**/*.rb")] }] end def relations load_entities(:relations) end def commands load_entities(:commands) end def mappers load_entities(:mappers) end private def load_entities(entity) Dir[globs[entity]].map do |file| require file Inflector.constantize(const_name(entity, file)) end end def const_name(entity, file) name = if namespace file.gsub("#{directory.dirname}/", '') else file.gsub("#{directory}/#{entity}/", '') end.gsub('.rb', '') Inflector.camelize(name) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rom-2.0.0 | lib/rom/setup/auto_registration.rb |