class FixtureBuilder::Configuration
Constants
- ACCESSIBLE_ATTRIBUTES
- SCHEMA_FILES
Public Class Methods
new(opts={})
click to toggle source
# File lib/fixture_builder/configuration.rb, line 25 def initialize(opts={}) @namer = Namer.new(self) @file_hashes = file_hashes @write_empty_files = true end
Public Instance Methods
delete_sql()
click to toggle source
# File lib/fixture_builder/configuration.rb, line 58 def delete_sql @delete_sql ||= "DELETE FROM %{table}" end
delete_sql=(sql)
click to toggle source
# File lib/fixture_builder/configuration.rb, line 62 def delete_sql=(sql) if sql =~ /%s/ ActiveSupport::Deprecation.warn("Passing '%s' into delete_sql is deprecated. Please use '%{table}' instead.", caller) sql = sql.sub(/%s/, '%{table}') end @delete_sql = sql end
factory(&block)
click to toggle source
# File lib/fixture_builder/configuration.rb, line 39 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_check()
click to toggle source
# File lib/fixture_builder/configuration.rb, line 74 def files_to_check @files_to_check ||= schema_definition_files end
files_to_check=(files)
click to toggle source
# File lib/fixture_builder/configuration.rb, line 85 def files_to_check=(files) @files_to_check = files @file_hashes = file_hashes @files_to_check end
fixture_builder_file()
click to toggle source
# File lib/fixture_builder/configuration.rb, line 95 def fixture_builder_file @fixture_builder_file ||= ::Rails.root.join('tmp', 'fixture_builder.yml') end
fixture_directory()
click to toggle source
# File lib/fixture_builder/configuration.rb, line 107 def fixture_directory @fixture_directory ||= FixturesPath.absolute_rails_fixtures_path end
fixtures_dir(path = '')
click to toggle source
# File lib/fixture_builder/configuration.rb, line 111 def fixtures_dir(path = '') File.expand_path(File.join(fixture_directory, path)) end
include(*args)
click to toggle source
# File lib/fixture_builder/configuration.rb, line 31 def include(*args) class_eval do args.each do |arg| include arg end end end
name_model_with(model_class, &block)
click to toggle source
# File lib/fixture_builder/configuration.rb, line 99 def name_model_with(model_class, &block) @namer.name_model_with(model_class, &block) end
record_name_fields()
click to toggle source
# File lib/fixture_builder/configuration.rb, line 91 def record_name_fields @record_name_fields ||= %w{ unique_name display_name name title username login } end
schema_definition_files()
click to toggle source
# File lib/fixture_builder/configuration.rb, line 78 def schema_definition_files Dir['db/*'].inject([]) do |result, file| result << file if SCHEMA_FILES.include?(file) result end end
select_sql()
click to toggle source
# File lib/fixture_builder/configuration.rb, line 46 def select_sql @select_sql ||= "SELECT * FROM %{table}" end
select_sql=(sql)
click to toggle source
# File lib/fixture_builder/configuration.rb, line 50 def select_sql=(sql) if sql =~ /%s/ ActiveSupport::Deprecation.warn("Passing '%s' into select_sql is deprecated. Please use '%{table}' instead.", caller) sql = sql.sub(/%s/, '%{table}') end @select_sql = sql end
skip_tables()
click to toggle source
# File lib/fixture_builder/configuration.rb, line 70 def skip_tables @skip_tables ||= %w{ schema_migrations } end
tables()
click to toggle source
# File lib/fixture_builder/configuration.rb, line 103 def tables ActiveRecord::Base.connection.tables - skip_tables end
Private Instance Methods
file_hashes()
click to toggle source
# File lib/fixture_builder/configuration.rb, line 117 def file_hashes files_to_check.inject({}) do |hash, filename| hash[filename] = Digest::MD5.hexdigest(File.read(filename)) hash end end
read_config()
click to toggle source
# File lib/fixture_builder/configuration.rb, line 124 def read_config return {} unless File.exist?(fixture_builder_file) YAML.load_file(fixture_builder_file) end
rebuild_fixtures?()
click to toggle source
# File lib/fixture_builder/configuration.rb, line 134 def rebuild_fixtures? file_hashes_from_disk= @file_hashes file_hashes_from_config= read_config if Dir.glob("#{fixture_directory}/*.yml").blank? puts "=> rebuilding fixtures because fixture directory #{fixture_directory} has no *.yml files" return true elsif !::File.exist?(fixture_builder_file) puts "=> rebuilding fixtures because fixture_builder config file #{fixture_builder_file} does not exist" return true elsif file_hashes_from_disk != file_hashes_from_config puts '=> rebuilding fixtures because one or more of the following files have changed (see http://www.rubydoc.info/gems/hashdiff for diff syntax):' Differ.diff(file_hashes_from_disk, file_hashes_from_config).map {|diff| print ' '; p diff} return true end false end
write_config()
click to toggle source
# File lib/fixture_builder/configuration.rb, line 129 def write_config FileUtils.mkdir_p(File.dirname(fixture_builder_file)) File.open(fixture_builder_file, 'w') { |f| f.write(YAML.dump(@file_hashes)) } end