Class: ActiveAdmin::Dependency::Matcher
- Inherits:
-
Object
- Object
- ActiveAdmin::Dependency::Matcher
show all
- Includes:
- Comparable
- Defined in:
- lib/active_admin/dependency.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(name) ⇒ Matcher
Returns a new instance of Matcher.
65
66
67
|
# File 'lib/active_admin/dependency.rb', line 65
def initialize(name)
@name = name
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args, &block) ⇒ Object
102
103
104
105
106
107
108
|
# File 'lib/active_admin/dependency.rb', line 102
def method_missing(method, *args, &block)
if respond_to_missing?(method)
adapter.send method, *args, &block
else
super
end
end
|
Instance Attribute Details
#name ⇒ Object
Returns the value of attribute name.
63
64
65
|
# File 'lib/active_admin/dependency.rb', line 63
def name
@name
end
|
Instance Method Details
#<=>(other) ⇒ Object
89
90
91
|
# File 'lib/active_admin/dependency.rb', line 89
def <=>(other)
spec!.version <=> Gem::Version.create(other)
end
|
#adapter ⇒ Object
98
99
100
|
# File 'lib/active_admin/dependency.rb', line 98
def adapter
@adapter ||= Adapter.const_get(@name.camelize).new self
end
|
#inspect ⇒ Object
93
94
95
96
|
# File 'lib/active_admin/dependency.rb', line 93
def inspect
info = spec ? "#{spec.name} #{spec.version}" : '(missing)'
"<ActiveAdmin::Dependency::Matcher for #{info}>"
end
|
#match!(*reqs) ⇒ Object
81
82
83
84
85
|
# File 'lib/active_admin/dependency.rb', line 81
def match!(*reqs)
unless match? reqs
raise DependencyError, "You provided #{spec!.name} #{spec!.version} but we need: #{reqs.join ', '}."
end
end
|
#match?(*reqs) ⇒ Boolean
77
78
79
|
# File 'lib/active_admin/dependency.rb', line 77
def match?(*reqs)
!!spec && Gem::Requirement.create(reqs).satisfied_by?(spec.version)
end
|
#respond_to_missing?(method, include_private = false) ⇒ Boolean
110
111
112
113
114
|
# File 'lib/active_admin/dependency.rb', line 110
def respond_to_missing?(method, include_private = false)
adapter.respond_to?(method) || super
rescue NameError
end
|
#spec ⇒ Object
69
70
71
|
# File 'lib/active_admin/dependency.rb', line 69
def spec
@spec ||= Gem.loaded_specs[name]
end
|
#spec! ⇒ Object
73
74
75
|
# File 'lib/active_admin/dependency.rb', line 73
def spec!
spec || raise(DependencyError, "To use #{name} you need to specify it in your Gemfile.")
end
|