push drawing once to it's own module

This commit is contained in:
Aaron Patterson 2012-08-09 14:46:57 -07:00
parent 1e8c0a29d0
commit c63d17c2be
1 changed files with 20 additions and 32 deletions

View File

@ -85,31 +85,6 @@ module RenderERBUtils
end
end
module SetupOnce
extend ActiveSupport::Concern
included do
cattr_accessor :setup_once_block
self.setup_once_block = nil
setup :run_setup_once
end
module ClassMethods
def setup_once(&block)
self.setup_once_block = block
end
end
private
def run_setup_once
if self.setup_once_block
self.setup_once_block.call
self.setup_once_block = nil
end
end
end
SharedTestRoutes = ActionDispatch::Routing::RouteSet.new
module ActionDispatch
@ -119,14 +94,19 @@ module ActionDispatch
super
end
end
end
module ActiveSupport
class TestCase
include SetupOnce
# Hold off drawing routes until all the possible controller classes
# have been loaded.
setup_once do
# Hold off drawing routes until all the possible controller classes
# have been loaded.
module DrawOnce
class << self
attr_accessor :drew
end
self.drew = false
def before_setup
super
return if DrawOnce.drew
SharedTestRoutes.draw do
get ':controller(/:action)'
end
@ -134,10 +114,18 @@ module ActiveSupport
ActionDispatch::IntegrationTest.app.routes.draw do
get ':controller(/:action)'
end
DrawOnce.drew = true
end
end
end
module ActiveSupport
class TestCase
include ActionDispatch::DrawOnce
end
end
class RoutedRackApp
attr_reader :routes