Class: TableLoaderDSL

Inherits:
Object show all
Defined in:
lib/dataload/dsl/table_loader_dsl.rb

Instance Method Summary collapse

Constructor Details

#initialize(&b) ⇒ TableLoaderDSL

Returns a new instance of TableLoaderDSL.



17
18
19
20
21
# File 'lib/dataload/dsl/table_loader_dsl.rb', line 17

def initialize(&b)
  @blk = b
  instance_eval(&@blk)
  master.add(self)
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(sym, *args, &b) ⇒ Object



32
33
34
35
36
37
38
# File 'lib/dataload/dsl/table_loader_dsl.rb', line 32

def method_missing(sym,*args,&b)
  if [:string, :text, :integer, :float, :decimal, :datetime, :timestamp, :time, :date, :binary, :boolean].include?(sym)
    args.flatten.each { |x| column(x,sym,&b) }
  else
    super(sym,*args,&b)
  end
end

Instance Method Details

#column(name, type, &blk) ⇒ Object



22
23
24
25
26
27
28
29
30
31
# File 'lib/dataload/dsl/table_loader_dsl.rb', line 22

def column(name,type,&blk)
  real_name = name
  if name.is_a?(Hash)
    raise "block given with hash" if block_given?
    blk = lambda { |x| x.send(name.values.first) }
    real_name = name.keys.first
  end
  blk ||= lambda { |x| x.send(real_name) }
  loader.columns << Column.new(:target_name => real_name, :blk => blk, :column_type => type)
end

#delimiter(x) ⇒ Object



49
50
51
# File 'lib/dataload/dsl/table_loader_dsl.rb', line 49

def delimiter(x)
  loader.delimiter = x
end

#masterObject



14
15
16
# File 'lib/dataload/dsl/table_loader_dsl.rb', line 14

def master
  MasterLoader.instance
end

#run!Object



45
46
47
48
# File 'lib/dataload/dsl/table_loader_dsl.rb', line 45

def run!
  manager.delete_rows! if @delete_existing_rows
  loader.load!
end

#source(file) ⇒ Object



39
40
41
# File 'lib/dataload/dsl/table_loader_dsl.rb', line 39

def source(file)
  loader.source_filename = file
end

#table(name) ⇒ Object



42
43
44
# File 'lib/dataload/dsl/table_loader_dsl.rb', line 42

def table(name)
  both.table_name = name
end