Class: TableLoaderDSL
Instance Method Summary collapse
- #column(name, type, &blk) ⇒ Object
- #delimiter(x) ⇒ Object
-
#initialize(&b) ⇒ TableLoaderDSL
constructor
A new instance of TableLoaderDSL.
- #master ⇒ Object
- #method_missing(sym, *args, &b) ⇒ Object
- #run! ⇒ Object
- #source(file) ⇒ Object
- #table(name) ⇒ Object
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 |
#master ⇒ Object
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 |