Class: Tanemaki::Seeder
Class Method Summary collapse
Instance Method Summary collapse
- #evaluate(*column_names, eval_scope: nil) ⇒ Object
-
#initialize(named_csv, options = {}) ⇒ Seeder
constructor
A new instance of Seeder.
- #named_csv ⇒ Object
- #random(klass = nil, method_name = nil, &block) ⇒ Object
- #seed(klass = nil, method = nil, &block) ⇒ Object
- #select(*column_names) ⇒ Object
Constructor Details
#initialize(named_csv, options = {}) ⇒ Seeder
Returns a new instance of Seeder.
67 68 69 70 71 72 73 |
# File 'lib/tanemaki.rb', line 67 def initialize(named_csv, = {}) @named_csv = named_csv @evaluate = [:evaluatable] || [] @eval_scope = [:eval_scope] @klass = [:klass] @method = [:method] || :create end |
Class Method Details
.call(*args) ⇒ Object
62 63 64 |
# File 'lib/tanemaki.rb', line 62 def self.call(*args) new(*args) end |
Instance Method Details
#evaluate(*column_names, eval_scope: nil) ⇒ Object
76 77 78 |
# File 'lib/tanemaki.rb', line 76 def evaluate(*column_names, eval_scope: nil) Seeder.(@named_csv, for_chain.merge(eval_scope: eval_scope || @eval_scope, evaluatable: column_names)) end |
#named_csv ⇒ Object
81 82 83 |
# File 'lib/tanemaki.rb', line 81 def named_csv @named_csv end |
#random(klass = nil, method_name = nil, &block) ⇒ Object
86 87 88 |
# File 'lib/tanemaki.rb', line 86 def random(klass = nil, method_name = nil, &block) Seeder.(@named_csv.shuffle, for_chain).seed(klass, method_name, &block) end |
#seed(klass = nil, method = nil, &block) ⇒ Object
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/tanemaki.rb', line 91 def seed(klass = nil, method = nil, &block) @named_csv.map do |row| readiness, nameless = begin result = evaluated(row.dup) [result, result.delete(:namelass_parameter_array)] end begin (klass || @klass).send((method || @method), *nameless, **readiness) rescue => e raise e unless block_given? block.(e, row) nil end end.compact end |
#select(*column_names) ⇒ Object
110 111 112 113 114 115 116 |
# File 'lib/tanemaki.rb', line 110 def select(*column_names) Seeder.(@named_csv.map do |row| column_names.each_with_object({}) do |name, new_row| new_row[name] = row[name] end.merge(namelass_parameter_array: row[:namelass_parameter_array]) end, for_chain) end |