Drop request class from RouteSet constructor.

If you would like to use a custom request class, please subclass and implemet
the `request_class` method.
This commit is contained in:
Aaron Patterson 2015-03-04 11:02:24 -08:00
parent 154d60c8ce
commit c2108926a4
3 changed files with 19 additions and 5 deletions

@ -1,3 +1,10 @@
* Drop request class from RouteSet constructor.
If you would like to use a custom request class, please subclass and implemet
the `request_class` method.
*tenderlove@ruby-lang.org*
* Fallback to `ENV['RAILS_RELATIVE_URL_ROOT']` in `url_for`.
Fixed an issue where the `RAILS_RELATIVE_URL_ROOT` environment variable is not

@ -311,7 +311,7 @@ def define_url_helper(mod, route, name, opts, route_key, url_strategy)
attr_accessor :formatter, :set, :named_routes, :default_scope, :router
attr_accessor :disable_clear_and_finalize, :resources_path_names
attr_accessor :default_url_options, :request_class
attr_accessor :default_url_options
attr_reader :env_key
alias :routes :set
@ -320,11 +320,10 @@ def self.default_resources_path_names
{ :new => 'new', :edit => 'edit' }
end
def initialize(request_class = ActionDispatch::Request)
def initialize
self.named_routes = NamedRouteCollection.new
self.resources_path_names = self.class.default_resources_path_names
self.default_url_options = {}
self.request_class = request_class
@append = []
@prepend = []
@ -337,6 +336,10 @@ def initialize(request_class = ActionDispatch::Request)
@formatter = Journey::Formatter.new @set
end
def request_class
ActionDispatch::Request
end
def draw(&block)
clear! unless @disable_clear_and_finalize
eval_block(block)
@ -545,7 +548,7 @@ def build_conditions(current_conditions, path_values)
conditions.keep_if do |k, _|
k == :action || k == :controller || k == :required_defaults ||
@request_class.public_method_defined?(k) || path_values.include?(k)
request_class.public_method_defined?(k) || path_values.include?(k)
end
end
private :build_conditions

@ -3583,7 +3583,11 @@ def call(env)
end
end
AltRoutes = ActionDispatch::Routing::RouteSet.new(AltRequest)
AltRoutes = Class.new(ActionDispatch::Routing::RouteSet) {
def request_class
AltRequest
end
}.new
AltRoutes.draw do
get "/" => TestAltApp::XHeader.new, :constraints => {:x_header => /HEADER/}
get "/" => TestAltApp::AltApp.new