Class: ActiveRecord::FixtureBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/active_record/fixture_builder.rb,
lib/active_record/fixture_builder.rb,
lib/active_record/fixture_builder/version.rb

Defined Under Namespace

Classes: Builder, Configuration, Database, Fixture

Constant Summary collapse

PUBLIC_INSTANCE_METHODS =
public_instance_methods - superclass.public_instance_methods
VERSION =
"0.0.1"

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(&block) ⇒ FixtureBuilder

Returns a new instance of FixtureBuilder.



15
16
17
# File 'lib/active_record/fixture_builder.rb', line 15

def initialize(&block)
  configure(&block) if block_given?
end

Class Method Details

.instanceObject



78
79
80
# File 'lib/active_record/fixture_builder.rb', line 78

def instance
  @instance ||= new
end

Instance Method Details

#build_fixtures!Object



51
52
53
54
# File 'lib/active_record/fixture_builder.rb', line 51

def build_fixtures!
  database.truncate_all_tables!
  builders.each(&:build!)
end

#buildersObject



40
41
42
43
44
45
# File 'lib/active_record/fixture_builder.rb', line 40

def builders
  config.freeze
  @builders ||= Dir[config.builders_path+'*.rb'].map do |path|
    Builder.new self, Pathname(path)
  end
end

#configObject



19
20
21
# File 'lib/active_record/fixture_builder.rb', line 19

def config
  @config ||= Configuration.new
end

#configure {|config| ... } ⇒ Object

Yields:



23
24
25
26
# File 'lib/active_record/fixture_builder.rb', line 23

def configure
  yield config
  self
end

#databaseObject



28
29
30
31
# File 'lib/active_record/fixture_builder.rb', line 28

def database
  config.freeze
  @database ||= Database.new(config)
end

#fixturesObject



33
34
35
36
37
38
# File 'lib/active_record/fixture_builder.rb', line 33

def fixtures
  config.freeze
  @fixtures ||= Dir[config.fixtures_path+'*.yml'].map do |path|
    Fixture.new self, Pathname(path)
  end
end

#inspectObject



71
72
73
# File 'lib/active_record/fixture_builder.rb', line 71

def inspect
  super.split(/ |>/).first+'>'
end

#load_fixtures!Object



47
48
49
# File 'lib/active_record/fixture_builder.rb', line 47

def load_fixtures!
  fixtures.each(&:load!)
end

#write_fixtures!Object



56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/active_record/fixture_builder.rb', line 56

def write_fixtures!
  database.table_names.each do |table_name|
    config.fixtures_path.join("#{table_name}.yml").open('w') do |file|
      records = database.select_all(table_name)

      fixture_data = {}
      records.each_with_index do |record, index|
        fixture_data["#{table_name}_#{index.to_s.rjust(3,'0')}"] = record
      end

      file.write fixture_data.to_yaml
    end
  end
end