module Monkey::Backend::AbstractBackend

Attributes

backend_name[RW]
backend_path[RW]

Public Instance Methods

available?() click to toggle source
# File lib/monkey/backend.rb, line 13
def available?
  return true if Object.const_defined? backend_name
  $LOADED_FEATURES.any? do |f|
    f =~ %r^(.*lib\/)?#{backend_path}|#{backend_path}(-[^\/]+)?\/lib/
  end
end
expects_module(name) click to toggle source
# File lib/monkey/backend.rb, line 44
def expects_module(name)
  name.split("::").inject(Object) do |parent, name|
    if name.empty?
      parent
    else
      parent.class_eval "module #{name}; self; end"
    end
  end
end
gem_name() click to toggle source
# File lib/monkey/backend.rb, line 71
def gem_name
  @gem_name ||= name[%r[^:]*$/].downcase
end
load_lib(*data) click to toggle source
Alias for: load_libs
load_libs(*data) click to toggle source
# File lib/monkey/backend.rb, line 25
def load_libs(*data)
  load_with_prefix backend_path, data
end
Also aliased as: load_lib
load_with_prefix(prefix, libs = nil) click to toggle source
# File lib/monkey/backend.rb, line 31
def load_with_prefix(prefix, libs = nil)
  case libs
  when String, Symbol then require File.join(prefix.to_s, libs.to_s)
  when Array then libs.each { |lib| load_with_prefix prefix, lib }
  when Hash then libs.each { |k, v| load_with_prefix File.join(prefix.to_s, k.to_s), v }
  else raise ArgumentError, "cannot handle #{libs.inspect}"
  end
end
missing(*libs) click to toggle source
# File lib/monkey/backend.rb, line 40
def missing(*libs)
  load_with_prefix "monkey/backend/common", libs
end
setup_complete() click to toggle source
# File lib/monkey/backend.rb, line 20
def setup_complete
  require backend_path
  setup
end
version(default = "0") click to toggle source
# File lib/monkey/backend.rb, line 54
def version(default = "0")
  return version(nil) || default unless default.nil?
  return @version if @version
  return unless defined? Gem
  Gem.send :attr_accessor, :loaded_specs
  return unless Gem.loaded_specs.respond_to? :[]
  @version = Gem.loaded_specs[gem_name].version.to_s if Gem.loaded_specs.include? gem_name
end
version!() click to toggle source
# File lib/monkey/backend.rb, line 63
def version!
  version(nil) or raise RuntimeError, "unable to determine backend version"
end
version?() click to toggle source
# File lib/monkey/backend.rb, line 67
def version?
  !!version(false)
end