123456789_123456789_123456789_123456789_123456789_

Module: Rails::Initializable::ClassMethods

Relationships & Source Files
Defined in: railties/lib/rails/initializable.rb

Instance Method Summary

Instance Method Details

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

Raises:

  • (ArgumentError)
[ GitHub ]

  
# File 'railties/lib/rails/initializable.rb', line 118

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.has?(opts[:before])
  initializers << Initializer.new(
    name, nil, before: opts[:before], after: opts[:after], group: opts[:group], &blk
  )
end

#initializers

[ GitHub ]

  
# File 'railties/lib/rails/initializable.rb', line 101

def initializers
  @initializers ||= Collection.new
end

#initializers_chain

[ GitHub ]

  
# File 'railties/lib/rails/initializable.rb', line 105

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)

[ GitHub ]

  
# File 'railties/lib/rails/initializable.rb', line 114

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