Class: Dumpable::Dumper

Inherits:
Object
  • Object
show all
Defined in:
lib/dumpable/dumper.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dumpee, options = {}) ⇒ Dumper

Returns a new instance of Dumper.



5
6
7
8
9
10
11
# File 'lib/dumpable/dumper.rb', line 5

def initialize(dumpee, options={})
  @dumpee = dumpee
  @options = Dumpable.config.merge(options || {})
  @id_padding = @options[:id_padding] || (@dumpee.class.respond_to?(:dumpable_options) && @dumpee.class.dumpable_options[:id_padding]) || Dumpable.config.id_padding
  @dumps = @options[:dumps] || (@dumpee.class.respond_to?(:dumpable_options) && @dumpee.class.dumpable_options[:dumps])
  @lines = []
end

Instance Attribute Details

#dumpeeObject

Returns the value of attribute dumpee.



3
4
5
# File 'lib/dumpable/dumper.rb', line 3

def dumpee
  @dumpee
end

#dumpsObject

Returns the value of attribute dumps.



3
4
5
# File 'lib/dumpable/dumper.rb', line 3

def dumps
  @dumps
end

#id_paddingObject

Returns the value of attribute id_padding.



3
4
5
# File 'lib/dumpable/dumper.rb', line 3

def id_padding
  @id_padding
end

#optionsObject

Returns the value of attribute options.



3
4
5
# File 'lib/dumpable/dumper.rb', line 3

def options
  @options
end

Class Method Details

.dump(*records_and_collections) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/dumpable/dumper.rb', line 18

def self.dump(*records_and_collections)
  options = records_and_collections.extract_options!
  lines = []
  records_and_collections.each do |record_or_collection|
    if record_or_collection.is_a?(Array) || record_or_collection.is_a?(ActiveRecord::Relation) || (record_or_collection.is_a?(Class) && record_or_collection.ancestors.include?(ActiveRecord::Base))
      record_or_collection = record_or_collection.all if record_or_collection.is_a?(Class) && record_or_collection.ancestors.include?(ActiveRecord::Base)
      record_or_collection.each do |object|
        lines << new(object, options).dump
      end
    else
      lines << new(record_or_collection, options).dump
    end
  end
  Dumpable::FileWriter.write(lines.flatten.compact, options)
end

Instance Method Details

#dumpObject



13
14
15
16
# File 'lib/dumpable/dumper.rb', line 13

def dump
  recursive_dump(@dumpee, @dumps)
  @lines << generate_insert_query(@dumpee)
end