module TestSeeds::ClassMethods

Public Instance Methods

defined_seeds() click to toggle source
# File lib/test_seeds.rb, line 51
def defined_seeds
  @defined_seeds ||= {}
end
seeds(name = nil, &block) click to toggle source
# File lib/test_seeds.rb, line 30
def seeds(name = nil, &block)
  set_callback(:seed, :before) do
    pre_vars = self.instance_variables
    self.instance_eval &block
    post_vars = self.instance_variables

    (post_vars - pre_vars).each do |seed_var|
      seed_name = seed_var.to_s[1..-1]
      next if seed_name.starts_with?("_")
      
      seed_accessor = self.set_seed_fixture(seed_name, self.instance_variable_get(seed_var))
      self.instance_variable_set(seed_var, nil) # avoid memory bloat

      defined_seeds = self.class.defined_seeds
      defined_seeds[name] ||= {}
      defined_seeds[name][seed_var] = seed_accessor
    end
    
  end
end