Class: ActiveExport::Csv
- Inherits:
-
Base
- Object
- Base
- ActiveExport::Csv
show all
- Defined in:
- lib/active_export/csv.rb
Instance Attribute Summary
Attributes inherited from Base
#config, #eval_methods, #label_keys, #label_prefix, #namespace, #options, #source, #source_name
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Base
build_label_keys_and_eval_methods, #build_label_keys_and_eval_methods!, #convert, #default_scope, #initialize, #key_name, translate, #translate
Class Method Details
.export(data, source, namespace, options = {}) ⇒ String
19
20
21
|
# File 'lib/active_export/csv.rb', line 19
def self.export(data, source, namespace, options = {})
new(source, namespace, options).export(data)
end
|
.export_file(data, source, namespace, filename, options = {}) ⇒ Object
29
30
31
|
# File 'lib/active_export/csv.rb', line 29
def self.export_file(data, source, namespace, filename, options = {})
new(source, namespace, options).export_file(data, filename)
end
|
Instance Method Details
#csv_options ⇒ Object
81
82
83
|
# File 'lib/active_export/csv.rb', line 81
def csv_options
self.config.default_csv_options.merge( self.options[:csv_options] || {} )
end
|
#export(data) ⇒ Object
33
34
35
36
37
38
|
# File 'lib/active_export/csv.rb', line 33
def export(data)
CSV.generate(csv_options) do |csv|
csv << if
export_data(data, csv)
end
end
|
#export_data(data, exporter) ⇒ Object
53
54
55
56
57
58
59
60
61
|
# File 'lib/active_export/csv.rb', line 53
def export_data(data, exporter)
if data.respond_to?(:find_in_batches) && data.respond_to?(:orders) && data.orders.blank? && data.respond_to?(:taken) && data.taken.blank?
data.find_in_batches(find_in_batches_options) do |group|
group.each{|f| exporter << generate_value(f) }
end
else
data.each{|f| exporter << generate_value(f) }
end
end
|
#export_file(data, filename) ⇒ Object
40
41
42
43
44
45
46
47
48
|
# File 'lib/active_export/csv.rb', line 40
def export_file(data, filename)
File.atomic_write(filename) do |file|
CSV.open(file, "wb", csv_options) do |csv|
csv << if
export_data(data, csv)
end
end
filename
end
|
#find_in_batches_options ⇒ Object
77
78
79
|
# File 'lib/active_export/csv.rb', line 77
def find_in_batches_options
self.config.default_find_in_batches_options.merge( self.options[:find_in_batches_options] || {} )
end
|
64
65
66
67
68
|
# File 'lib/active_export/csv.rb', line 64
def
self.label_keys.inject([]) {|result, key|
result << translate(key_name(key))
}
end
|
#generate_value(row) ⇒ Object
70
71
72
73
74
75
|
# File 'lib/active_export/csv.rb', line 70
def generate_value(row)
self.eval_methods.inject([]){|result, f|
v = row.send(:eval, f) rescue nil
result << convert(v)
}
end
|
85
86
87
|
# File 'lib/active_export/csv.rb', line 85
def
{ header: true }.merge(self.options)[:header]
end
|