Class: ThinkFeelDoEngine::Reports::Reporter
- Inherits:
-
Object
- Object
- ThinkFeelDoEngine::Reports::Reporter
- Defined in:
- app/models/think_feel_do_engine/reports/reporter.rb
Overview
Produces formatted versions of data produced by a data collector. The collector is expected to have two methods: ‘columns` returns a collection of column names `all` returns a collection of Hashes whose keys match the column names
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(collector) ⇒ Reporter
constructor
A new instance of Reporter.
- #to_csv(csv = []) ⇒ Object
- #write_csv ⇒ Object
Constructor Details
#initialize(collector) ⇒ Reporter
Returns a new instance of Reporter.
21 22 23 24 |
# File 'app/models/think_feel_do_engine/reports/reporter.rb', line 21 def initialize(collector) @collector = collector @path = self.class.file_path(parsed_name) end |
Class Method Details
.fetch_reports ⇒ Object
11 12 13 14 |
# File 'app/models/think_feel_do_engine/reports/reporter.rb', line 11 def self.fetch_reports return [] unless Rails.application.config.respond_to?(:reports) Rails.application.config.reports end |
.file_path(name) ⇒ Object
16 17 18 19 |
# File 'app/models/think_feel_do_engine/reports/reporter.rb', line 16 def self.file_path(name) Rails.application.config.reports_root_path .join("reports/#{name.to_s.scan(/[a-z]+/).join.downcase}.csv") end |
Instance Method Details
#to_csv(csv = []) ⇒ Object
32 33 34 35 36 37 38 39 |
# File 'app/models/think_feel_do_engine/reports/reporter.rb', line 32 def to_csv(csv = []) csv << @collector.columns # rubocop:disable Rails/FindEach @collector.all.each do |s| csv << @collector.columns.map { |c| s[c.to_sym] } end # rubocop:enable Rails/FindEach end |
#write_csv ⇒ Object
26 27 28 29 30 |
# File 'app/models/think_feel_do_engine/reports/reporter.rb', line 26 def write_csv CSV.open(@path, "wb") do |csv| to_csv(csv) end end |