class Hanami::Utils::Class

Class utilities @since 0.1.0

Public Class Methods

load(name, namespace = Object) click to toggle source

Loads a class for the given name, only if it’s defined.

@param name [String, Class] the specific class name @param namespace [Class, Module] the Ruby namespace where we want to perform the lookup. @return [Class, Module, NilClass] the Ruby constant, or nil if not found.

@since 0.8.0

@example

require 'hanami/utils/class'

module App
  module Service
    class Endpoint
    end
  end

  class ServiceEndpoint
  end
end

# basic usage
Hanami::Utils::Class.load('App::Service') # => App::Service
Hanami::Utils::Class.load(App::Service)   # => App::Service

# with explicit namespace
Hanami::Utils::Class.load('Service', App) # => App::Service
# File lib/hanami/utils/class.rb, line 71
def self.load(name, namespace = Object)
  load!(name, namespace) if namespace.const_defined?(name.to_s, false)
end
load!(name, namespace = Object) click to toggle source

Loads a class for the given name.

@param name [String, Class] the specific class name @param namespace [Class, Module] the Ruby namespace where we want to perform the lookup. @return [Class, Module] the found Ruby constant.

@raise [NameError] if no constant can be found.

@since 0.1.0

@example

require 'hanami/utils/class'

module App
  module Service
    class Endpoint
    end
  end

  class ServiceEndpoint
  end
end

# basic usage
Hanami::Utils::Class.load!('App::Service') # => App::Service
Hanami::Utils::Class.load!(App::Service)   # => App::Service

# with explicit namespace
Hanami::Utils::Class.load!('Service', App) # => App::Service

# with missing constant
Hanami::Utils::Class.load!('Unknown') # => raises NameError
# File lib/hanami/utils/class.rb, line 40
def self.load!(name, namespace = Object)
  namespace.const_get(name.to_s, false)
end