module ActiveAdmin::Dependency

def self.[](name)

def self.[](name)
  Matcher.new name.to_s
end

def self.method_missing(name, *args)


=> false
ActiveAdmin::Dependency['jquery-rails'] < 5

Which is especially useful if you're looking up a gem with dashes in the name.

=> true
ActiveAdmin::Dependency.rails >= '4.2.7'

All but the pessimistic operator (~>) can also be run using Ruby's comparison syntax.


-> ActiveAdmin::DependencyError: To use devise you need to specify it in your Gemfile.
ActiveAdmin::Dependency.devise!

-> ActiveAdmin::DependencyError: You provided rails 4.2.7 but we need: 5.
ActiveAdmin::Dependency.rails! '5'

=> true
ActiveAdmin::Dependency.rails? '>= 6.0.3', '<= 6.1.0'

=> true
ActiveAdmin::Dependency.rails? '~> 6.0.3'

=> true
ActiveAdmin::Dependency.rails? '= 6.0.3.2'

=> false
ActiveAdmin::Dependency.rails? '>= 6.1'

=> true
ActiveAdmin::Dependency.rails?

=> #
ActiveAdmin::Dependency.rails

Provides a clean interface to check for gem dependencies at runtime.
def self.method_missing(name, *args)
  if name[-1] == "?"
    Matcher.new(name[0..-2]).match? args
  elsif name[-1] == "!"
    Matcher.new(name[0..-2]).match! args
  else
    Matcher.new name.to_s
  end
end