class Crabfarm::Strategies::Loader

Public Class Methods

new(_name, _klass, _options={}) click to toggle source
# File lib/crabfarm/strategies.rb, line 5
def initialize(_name, _klass, _options={})
  @name = _name
  @klass = _klass

  @pkg = if _options.key? :require
    _options[:require]
  elsif @klass.is_a? String
    Utils::Naming.route_from_constant(@klass).join('/')
  else nil end

  @requirements = Array(_options[:dependencies]) if _options.key? :dependencies
end

Public Instance Methods

load() click to toggle source
# File lib/crabfarm/strategies.rb, line 18
def load
  load_requirements unless @requirements.nil?
  require @pkg if @pkg
  if @klass.is_a? String then Object.const_get @klass else @klass end
end

Private Instance Methods

load_requirements() click to toggle source
# File lib/crabfarm/strategies.rb, line 26
def load_requirements
  @requirements.each do |dep|
    begin
      require dep
      # TODO: check dependency version!
    rescue LoadError
      raise ConfigurationError.new "Could not find #{@name} dependency, maybe you forgot to add `gem \"#{dep}\"` to the crawler's Gemfile?"
    end
  end
end