1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00
This commit is contained in:
Arthur Neves 2016-11-01 12:36:00 -04:00
commit 4a8edc0d82
No known key found for this signature in database
GPG key ID: 04A390FB1E433E17

View file

@ -132,27 +132,19 @@ module Rails
end
def rake_tasks(&blk)
@rake_tasks ||= []
@rake_tasks << blk if blk
@rake_tasks
register_block_for(:rake_tasks, &blk)
end
def console(&blk)
@load_console ||= []
@load_console << blk if blk
@load_console
register_block_for(:load_console, &blk)
end
def runner(&blk)
@load_runner ||= []
@load_runner << blk if blk
@load_runner
register_block_for(:runner, &blk)
end
def generators(&blk)
@generators ||= []
@generators << blk if blk
@generators
register_block_for(:generators, &blk)
end
def abstract_railtie?
@ -186,6 +178,17 @@ module Rails
ActiveSupport::Inflector.underscore(string).tr("/", "_")
end
# receives an instance variable identifier, set the variable value if is
# blank and append given block to value, which will be used later in
# `#each_registered_block(type, &block)`
def register_block_for(type, &blk)
var_name = "@#{type}"
blocks = instance_variable_get(var_name) || instance_variable_set(var_name, [])
blocks << blk if blk
blocks
end
# If the class method does not have a method, then send the method call
# to the Railtie instance.
def method_missing(name, *args, &block)
@ -241,6 +244,7 @@ module Rails
private
# run `&block` in every registered block in `#register_block_for`
def each_registered_block(type, &block)
klass = self.class
while klass.respond_to?(type)