Class: EacRubyUtils::RootModuleSetup
- Defined in:
- lib/eac_ruby_utils/root_module_setup.rb
Constant Summary collapse
- DEFAULT_NAMESPACE =
::Object
- LIB_DIRECTORY_BASENAME =
'lib'
Instance Attribute Summary collapse
-
#block ⇒ Object
readonly
Returns the value of attribute block.
-
#root_module_file ⇒ Object
readonly
Returns the value of attribute root_module_file.
Class Method Summary collapse
Instance Method Summary collapse
- #extension_for ⇒ Module?
- #ignore(path) ⇒ Object
-
#initialize(root_module_file, &block) ⇒ RootModuleSetup
constructor
A new instance of RootModuleSetup.
- #namespace ⇒ Module
- #perform ⇒ void
- #relative_root_module_file ⇒ String
- #root_module_directory ⇒ String
Constructor Details
#initialize(root_module_file, &block) ⇒ RootModuleSetup
Returns a new instance of RootModuleSetup.
23 24 25 26 |
# File 'lib/eac_ruby_utils/root_module_setup.rb', line 23 def initialize(root_module_file, &block) self.root_module_file = root_module_file self.block = block end |
Instance Attribute Details
#block ⇒ Object
Returns the value of attribute block.
20 21 22 |
# File 'lib/eac_ruby_utils/root_module_setup.rb', line 20 def block @block end |
#root_module_file ⇒ Object
Returns the value of attribute root_module_file.
20 21 22 |
# File 'lib/eac_ruby_utils/root_module_setup.rb', line 20 def root_module_file @root_module_file end |
Class Method Details
.perform(root_module_file, &block) ⇒ Object
15 16 17 |
# File 'lib/eac_ruby_utils/root_module_setup.rb', line 15 def perform(root_module_file, &block) new(root_module_file, &block).perform end |
Instance Method Details
#extension_for ⇒ Module?
29 30 31 32 33 34 35 |
# File 'lib/eac_ruby_utils/root_module_setup.rb', line 29 def extension_for dirname = ::File.dirname(relative_root_module_file) return nil if ['.', '/', ''].include?(dirname) require dirname ::ActiveSupport::Inflector.constantize(dirname.classify) end |
#ignore(path) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/eac_ruby_utils/root_module_setup.rb', line 38 def ignore(path) count_before = loader.send(:ignored_paths).count target_path = path.to_pathname.basename_sub { |b| "#{b.basename('.*')}.rb" } .(root_module_directory) result = loader.ignore target_path return result if result.count > count_before raise ::ArgumentError, [ "Trying to ignore path \"#{path}\" did not increase the ignored paths.", "Argument path: \"#{path}\"", "Target path: \"#{target_path}\"", "Ignored paths: #{result}" ].join("\n") end |
#namespace ⇒ Module
52 53 54 |
# File 'lib/eac_ruby_utils/root_module_setup.rb', line 52 def namespace extension_for || DEFAULT_NAMESPACE end |
#perform ⇒ void
This method returns an undefined value.
57 58 59 60 |
# File 'lib/eac_ruby_utils/root_module_setup.rb', line 57 def perform perform_block perform_zeitwerk end |
#relative_root_module_file ⇒ String
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/eac_ruby_utils/root_module_setup.rb', line 63 def relative_root_module_file count = 0 current = ::File.basename(root_module_file, '.*') dirname = ::File.dirname(root_module_file) loop do ibr if dirname == '/' break current if ::File.basename(dirname) == LIB_DIRECTORY_BASENAME current = ::File.join(::File.basename(dirname), current) dirname = ::File.dirname(dirname) count += 1 end end |
#root_module_directory ⇒ String
80 81 82 83 |
# File 'lib/eac_ruby_utils/root_module_setup.rb', line 80 def root_module_directory ::File.(::File.basename(root_module_file, '.*'), ::File.dirname(root_module_file)) end |