Module: Rails::Initializable::ClassMethods

Defined in:
railties/lib/rails/initializable.rb

Instance Method Summary collapse

Instance Method Details

#initializer(name, opts = {}, &blk) ⇒ Object

Raises:

  • (ArgumentError)

82
83
84
85
86
# File 'railties/lib/rails/initializable.rb', line 82

def initializer(name, opts = {}, &blk)
  raise ArgumentError, "A block must be passed when defining an initializer" unless blk
  opts[:after] ||= initializers.last.name unless initializers.empty? || initializers.find { |i| i.name == opts[:before] }
  initializers << Initializer.new(name, nil, opts, &blk)
end

#initializersObject


65
66
67
# File 'railties/lib/rails/initializable.rb', line 65

def initializers
  @initializers ||= Collection.new
end

#initializers_chainObject


69
70
71
72
73
74
75
76
# File 'railties/lib/rails/initializable.rb', line 69

def initializers_chain
  initializers = Collection.new
  ancestors.reverse_each do |klass|
    next unless klass.respond_to?(:initializers)
    initializers = initializers + klass.initializers
  end
  initializers
end

#initializers_for(binding) ⇒ Object


78
79
80
# File 'railties/lib/rails/initializable.rb', line 78

def initializers_for(binding)
  Collection.new(initializers_chain.map { |i| i.bind(binding) })
end