Class: FixtureBuilder::Configuration

Inherits:
Object
  • Object
show all
Includes:
Delegations::Namer
Defined in:
lib/fixture_builder/configuration.rb

Constant Summary collapse

ACCESSIBLE_ATTRIBUTES =
[:select_sql, :delete_sql, :skip_tables, :files_to_check, :record_name_fields,
:fixture_builder_file, :fixture_directory, :after_build, :legacy_fixtures, :model_name_procs]
SCHEMA_FILES =
['db/schema.rb', 'db/development_structure.sql', 'db/test_structure.sql', 'db/production_structure.sql']

Instance Method Summary collapse

Methods included from Delegations::Namer

included

Constructor Details

#initialize(opts = {}) ⇒ Configuration

Returns a new instance of Configuration.



16
17
18
19
# File 'lib/fixture_builder/configuration.rb', line 16

def initialize(opts={})
  @namer = Namer.new(self)
  @file_hashes = file_hashes
end

Instance Method Details

#delete_sqlObject



40
41
42
# File 'lib/fixture_builder/configuration.rb', line 40

def delete_sql
  @delete_sql ||= "DELETE FROM %s"
end

#factory(&block) ⇒ Object



29
30
31
32
33
34
# File 'lib/fixture_builder/configuration.rb', line 29

def factory(&block)
  self.files_to_check += @legacy_fixtures.to_a
  return unless rebuild_fixtures?
  @builder = Builder.new(self, @namer, block).generate!
  write_config
end

#files_to_checkObject



48
49
50
# File 'lib/fixture_builder/configuration.rb', line 48

def files_to_check
  @files_to_check ||= schema_definition_files
end

#files_to_check=(files) ⇒ Object



59
60
61
62
63
# File 'lib/fixture_builder/configuration.rb', line 59

def files_to_check=(files)
  @files_to_check = files
  @file_hashes = file_hashes
  @files_to_check
end

#fixture_builder_fileObject



69
70
71
# File 'lib/fixture_builder/configuration.rb', line 69

def fixture_builder_file
  @fixture_builder_file ||= ::Rails.root.join('tmp', 'fixture_builder.yml')
end

#fixture_directoryObject



81
82
83
# File 'lib/fixture_builder/configuration.rb', line 81

def fixture_directory
  @fixture_directory ||= File.expand_path(File.join(::Rails.root, spec_or_test_dir, 'fixtures'))
end

#fixtures_dir(path = '') ⇒ Object



85
86
87
# File 'lib/fixture_builder/configuration.rb', line 85

def fixtures_dir(path = '')
  File.expand_path(File.join(fixture_directory, path))
end

#include(*args) ⇒ Object



21
22
23
24
25
26
27
# File 'lib/fixture_builder/configuration.rb', line 21

def include(*args)
  class_eval do
    args.each do |arg|
      include arg
    end
  end
end

#name_model_with(model_class, &block) ⇒ Object



73
74
75
# File 'lib/fixture_builder/configuration.rb', line 73

def name_model_with(model_class, &block)
  @namer.name_model_with(model_class, &block)
end

#record_name_fieldsObject



65
66
67
# File 'lib/fixture_builder/configuration.rb', line 65

def record_name_fields
  @record_name_fields ||= %w{ unique_name display_name name title username login }
end

#schema_definition_filesObject



52
53
54
55
56
57
# File 'lib/fixture_builder/configuration.rb', line 52

def schema_definition_files
  Dir['db/*'].inject([]) do |result, file|
    result << file if SCHEMA_FILES.include?(file)
    result
  end
end

#select_sqlObject



36
37
38
# File 'lib/fixture_builder/configuration.rb', line 36

def select_sql
  @select_sql ||= "SELECT * FROM %s"
end

#skip_tablesObject



44
45
46
# File 'lib/fixture_builder/configuration.rb', line 44

def skip_tables
  @skip_tables ||= %w{ schema_migrations }
end

#tablesObject



77
78
79
# File 'lib/fixture_builder/configuration.rb', line 77

def tables
  ActiveRecord::Base.connection.tables - skip_tables
end