class Bricolage::DataSource

Constants

CLASSES

Attributes

context[R]
logger[R]
name[R]

Public Class Methods

get_class(type) click to toggle source
# File lib/bricolage/datasource.rb, line 119
def DataSource.get_class(type)
  unless CLASSES[type.to_s]
    begin
      require "bricolage/#{type}datasource"
    rescue LoadError
      raise ParameterError, "no such data source type: #{type}"
    end
    raise FatalError, "DataSource class does not exist: #{type}" unless CLASSES[type.to_s]
  end
  CLASSES[type.to_s]
end
new_for_type(type, name, config, context, logger) click to toggle source
# File lib/bricolage/datasource.rb, line 99
def DataSource.new_for_type(type, name, config, context, logger)
  ds = get_class(type).new(**config)
  ds.__send__ :initialize_base, name, context, logger
  ds
rescue ArgumentError => err
  # FIXME: do not rely on error message
  ent = err.message.slice(/unknown keyword: (\S+)/, 1) or raise
  raise ParameterError, "unknown config entry in database.yml: #{name}.#{ent}"
end

Private Class Methods

declare_type(type) click to toggle source
# File lib/bricolage/datasource.rb, line 114
def declare_type(type)
  CLASSES[type.to_s] = self
end

Public Instance Methods

open() { |nil| ... } click to toggle source
# File lib/bricolage/datasource.rb, line 142
def open
  yield nil
end
open_for_batch(&block) click to toggle source
# File lib/bricolage/datasource.rb, line 146
def open_for_batch(&block)
  open(&block)
end
redshift_loader_source?() click to toggle source
# File lib/bricolage/psqldatasource.rb, line 151
def redshift_loader_source?
  false
end

Private Instance Methods

initialize_base(name, context, logger) click to toggle source
# File lib/bricolage/datasource.rb, line 131
def initialize_base(name, context, logger)
  @name = name
  @context = context
  @logger = logger
end