Class: Passlib::Internal::Dependency

Inherits:
Module
  • Object
show all
Defined in:
lib/passlib/internal/dependency.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dependency) ⇒ Dependency

Returns a new instance of Dependency.



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/passlib/internal/dependency.rb', line 15

def initialize(dependency, &)
  super()
  @dependency = dependency.to_s
  require @dependency
  define_method("#{dependency}_available?") { true }
rescue LoadError
  begin
    # Reraise so Exception#cause is set
    raise Passlib::MissingDependency, "missing dependency: #{dependency}"
  rescue Passlib::MissingDependency => exception
    define_method("#{dependency}_available?") { false }
    define_method("available?") { false }
    define_method(:create) { |*| raise exception }
    define_method(:load) { |*| raise exception }
  end
ensure
  private "#{dependency}_available?"
  super(&) if block_given?
end

Class Method Details

.[]Object



7
# File 'lib/passlib/internal/dependency.rb', line 7

def self.[](...) = new(...)

.new(dependency, *requirements) ⇒ Object



9
10
11
12
13
# File 'lib/passlib/internal/dependency.rb', line 9

def self.new(dependency, *requirements, &)
  KNOWN[dependency] ||= []
  KNOWN[dependency].concat(requirements)
  super(dependency, &)
end

Instance Method Details

#inspectObject



35
36
37
# File 'lib/passlib/internal/dependency.rb', line 35

def inspect
  "#{self.class.inspect}[#{@dependency.inspect}]"
end