Class: Cranium::Extract::Strategy::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/cranium/extract/strategy/base.rb

Direct Known Subclasses

Incremental, Simple

Instance Method Summary collapse

Instance Method Details

#execute(extract_definition) ⇒ Object

Raises:

  • (StandardError)


5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/cranium/extract/strategy/base.rb', line 5

def execute(extract_definition)
  target_file_name = "#{extract_definition.name}.csv"
  target_file_path = File.join Cranium.configuration.upload_path, target_file_name

  raise StandardError, %Q(Extract halted: a file named "#{target_file_name}" already exists) if File.exists? target_file_path

  CSV.open target_file_path, "w:UTF-8" do |target_file|
    dataset = Cranium::Database[extract_definition.from].fetch extract_definition.query

    target_file << (extract_definition.columns || dataset.columns)
    write_dataset_into_file target_file, dataset, extract_definition
  end
end