Sha256: 3dc62a23defb5236f36fa2f62e0dbdeb0a421145ea4102537e8f4e1530bac9dc

Contents?: true

Size: 638 Bytes

Versions: 4

Compression:

Stored size: 638 Bytes

Contents

class AutoAutoloader::SubClassAutoloader
  module ClassMethods
    def const_missing(const_name)
      require "string-cases"

      last_name = const_name.to_s.split("::").last
      last_class_name = name.to_s.split("::").last

      path = "#{@autoload_path}/#{::StringCases.camel_to_snake(last_class_name)}/#{::StringCases.camel_to_snake(last_name)}.rb"

      if File.exist?(path)
        require path

        if const_defined?(last_name)
          return const_get(last_name)
        else
          raise LoadError, "Expected path to define #{const_name} but it didnt: #{path}"
        end
      end

      super
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
auto_autoloader-0.0.5 lib/auto_autoloader/sub_class_autoloader.rb
auto_autoloader-0.0.4 lib/auto_autoloader/sub_class_autoloader.rb
auto_autoloader-0.0.3 lib/auto_autoloader/sub_class_autoloader.rb
auto_autoloader-0.0.2 lib/auto_autoloader/sub_class_autoloader.rb