class FactoryGirl::Callback

Attributes

block[R]
name[R]

Public Class Methods

new(name, block) click to toggle source
# File lib/factory_girl/callback.rb, line 5
def initialize(name, block)
  @name  = name.to_sym
  @block = block
  ensure_valid_callback_name!
end

Public Instance Methods

==(other) click to toggle source
# File lib/factory_girl/callback.rb, line 19
def ==(other)
  name == other.name &&
    block == other.block
end
run(instance, evaluator) click to toggle source
# File lib/factory_girl/callback.rb, line 11
def run(instance, evaluator)
  case block.arity
  when 1, -1 then syntax_runner.instance_exec(instance, &block)
  when 2 then syntax_runner.instance_exec(instance, evaluator, &block)
  else        syntax_runner.instance_exec(&block)
  end
end

Private Instance Methods

ensure_valid_callback_name!() click to toggle source
# File lib/factory_girl/callback.rb, line 29
def ensure_valid_callback_name!
  unless FactoryGirl.callback_names.include?(name)
    raise InvalidCallbackNameError, "#{name} is not a valid callback name. " +
      "Valid callback names are #{FactoryGirl.callback_names.inspect}"
  end
end
syntax_runner() click to toggle source
# File lib/factory_girl/callback.rb, line 36
def syntax_runner
  @syntax_runner ||= SyntaxRunner.new
end