Module: FactoryGirl::Preload

Defined in:
lib/factory_girl/preload.rb,
lib/factory_girl/preload/helpers.rb,
lib/factory_girl/preload/version.rb

Defined Under Namespace

Modules: Helpers, Version

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.factoriesObject

Returns the value of attribute factories.



11
12
13
# File 'lib/factory_girl/preload.rb', line 11

def factories
  @factories
end

.preloadersObject

Returns the value of attribute preloaders.



10
11
12
# File 'lib/factory_girl/preload.rb', line 10

def preloaders
  @preloaders
end

Class Method Details

.clean(*names) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/factory_girl/preload.rb', line 27

def self.clean(*names)
  query = case ActiveRecord::Base.connection.adapter_name
    when "SQLite"     then "DELETE FROM %s"
    when "PostgreSQL" then "TRUNCATE TABLE %s RESTART IDENTITY"
    else "TRUNCATE TABLE %s"
  end
  names = ActiveRecord::Base.descendants.collect(&:table_name).uniq if names.empty?
  ActiveRecord::Base.connection.disable_referential_integrity do
    names.each {|table| ActiveRecord::Base.connection.execute(query % ActiveRecord::Base.connection.quote_table_name(table))}
  end
end

.reload_factoriesObject



39
40
41
42
43
44
45
# File 'lib/factory_girl/preload.rb', line 39

def self.reload_factories
  factories.each do |class_name, group|
    group.each do |name, factory|
      factories[class_name][name] = factory.class.find(factory.id)
    end
  end
end

.runObject



17
18
19
20
21
22
23
24
25
# File 'lib/factory_girl/preload.rb', line 17

def self.run
  helper = Object.new.extend(Helpers)

  ActiveRecord::Base.connection.transaction :requires_new => true do
    preloaders.each do |block|
      helper.instance_eval(&block)
    end
  end
end