diff options
author | Carl Lerche <me@carllerche.com> | 2010-09-17 12:05:40 -0700 |
---|---|---|
committer | Carl Lerche <me@carllerche.com> | 2010-09-17 12:05:40 -0700 |
commit | 7418a440967586851a182bbcd6d93dbba9497cdb (patch) | |
tree | 35be90b8735b6dc7065762ca6618fedb53502e13 /actionpack/lib/action_dispatch/routing | |
parent | f2765a1cb3559f7c9d79d998039b6a43b5830c9f (diff) | |
download | rails-7418a440967586851a182bbcd6d93dbba9497cdb.tar.gz rails-7418a440967586851a182bbcd6d93dbba9497cdb.tar.bz2 rails-7418a440967586851a182bbcd6d93dbba9497cdb.zip |
Add RouteSet#append
Allows specifying blocks to the routeset that will get appended after the RouteSet is drawn.
Diffstat (limited to 'actionpack/lib/action_dispatch/routing')
-rw-r--r-- | actionpack/lib/action_dispatch/routing/route_set.rb | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/actionpack/lib/action_dispatch/routing/route_set.rb b/actionpack/lib/action_dispatch/routing/route_set.rb index 835ba03784..7ac07fe426 100644 --- a/actionpack/lib/action_dispatch/routing/route_set.rb +++ b/actionpack/lib/action_dispatch/routing/route_set.rb @@ -217,27 +217,35 @@ module ActionDispatch self.valid_conditions.delete(:id) self.valid_conditions.push(:controller, :action) + @append = [] @disable_clear_and_finalize = false clear! end def draw(&block) clear! unless @disable_clear_and_finalize + eval_block(block) + finalize! unless @disable_clear_and_finalize + + nil + end + + def append(&block) + @append << block + end + def eval_block(block) mapper = Mapper.new(self) if default_scope mapper.with_default_scope(default_scope, &block) else mapper.instance_exec(&block) end - - finalize! unless @disable_clear_and_finalize - - nil end def finalize! return if @finalized + @append.each { |blk| eval_block(blk) } @finalized = true @set.freeze end |