module Journeyman::Definition
Internal: Contains all the factory method definition logic.
Public Instance Methods
define(name, options={}, &config)
click to toggle source
Public: Defines a new factory for Journeyman
, which consists in a build and create method, and may optionally include finder and default methods.
Returns Builder
for debug purposes.
# File lib/journeyman/definition.rb, line 11 def define(name, options={}, &config) finder, default = options.delete(:include_finder), options.delete(:include_default) Builder.new(name, options, config).tap do |builder| define_find_method(name, builder) unless finder == false define_build_method(name, builder) define_create_method(name, builder) define_default_method(name) if default end end
Private Instance Methods
define_build_method(name, builder)
click to toggle source
Internal: Defines the builder method.
# File lib/journeyman/definition.rb, line 32 def define_build_method(name, builder) define_helper "build_#{name}", ->(attrs={}) { builder.build(attrs) } end
define_create_method(name, builder)
click to toggle source
Internal: Defines the create method.
# File lib/journeyman/definition.rb, line 37 def define_create_method(name, builder) define_helper "create_#{name}", ->(attrs={}) { builder.create(attrs) } end
define_default_method(name)
click to toggle source
Internal: Defines the default method.
# File lib/journeyman/definition.rb, line 42 def define_default_method(name) @helpers.send :class_eval, <<-EVAL def default_#{name} @#{name} ||= Journeyman.create(:'#{name}') end EVAL end
define_find_method(name, builder)
click to toggle source
Internal: Defines the finder method.
# File lib/journeyman/definition.rb, line 27 def define_find_method(name, builder) define_helper "find_#{name}", ->(id) { builder.find(id) } end
define_helper(name, proc)
click to toggle source
Internal: Syntax sugar to define a method in the helpers module.
# File lib/journeyman/definition.rb, line 51 def define_helper(name, proc) @helpers.send :define_method, name, proc end