Module: FactoryCallbacks

Included in:
FactoryBoy
Defined in:
lib/factory_boy/factory_callbacks.rb

Instance Method Summary collapse

Instance Method Details

#callback(factory_name, on_call, block_scope, &block) ⇒ Object



21
22
23
24
25
# File 'lib/factory_boy/factory_callbacks.rb', line 21

def callback(factory_name, on_call, block_scope, &block)
  run_callback(factory_name, :before, on_call, block_scope)
  block.call
  run_callback(factory_name, :after, on_call, block_scope)
end

#get_callback(factory_name, execution_precedence, on_call) ⇒ Object



10
11
12
13
14
# File 'lib/factory_boy/factory_callbacks.rb', line 10

def get_callback(factory_name, execution_precedence, on_call)
  if @@callbacks.try(:[], factory_name).try(:[], execution_precedence).try(:[], on_call)
    @@callbacks[factory_name][execution_precedence][on_call] 
  end
end

#register_callback(factory_name, execution_precedence, on_call, &block) ⇒ Object



4
5
6
7
8
# File 'lib/factory_boy/factory_callbacks.rb', line 4

def register_callback(factory_name, execution_precedence, on_call, &block)
  @@callbacks[factory_name] ||= {}
  @@callbacks[factory_name][execution_precedence] ||= {}
  @@callbacks[factory_name][execution_precedence][on_call] = block
end

#run_callback(factory_name, execution_precedence, on_call, block_scope) ⇒ Object



16
17
18
19
# File 'lib/factory_boy/factory_callbacks.rb', line 16

def run_callback(factory_name, execution_precedence, on_call, block_scope)
  callback = get_callback(factory_name, execution_precedence, on_call)
  block_scope.instance_eval(&callback) if callback
end