aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch/routing/route_set.rb
Commit message (Collapse)AuthorAgeFilesLines
* Change the behavior of route defaultsAndrew White2013-01-151-1/+1
| | | | | | | | | | | | | | | | | | | This commit changes route defaults so that explicit defaults are no longer required where the key is not part of the path. For example: resources :posts, bucket_type: 'posts' will be required whenever constructing the url from a hash such as a functional test or using url_for directly. However using the explicit form alters the behavior so it's not required: resources :projects, defaults: { bucket_type: 'projects' } This changes existing behavior slightly in that any routes which only differ in their defaults will match the first route rather than the closest match. Closes #8814
* Raise correct exception now Journey is integrated.Andrew White2013-01-151-4/+2
| | | | | | | Now that Journey has been integrated into ActionDispatch we can raise the exception ActionController::UrlGenerationError directly rather than raising the internal Journey::Router::RoutingError and then have ActionDispatch::Routing::RouteSet#generate re-raise the exception.
* Integrate Journey into Action DispatchAndrew White2012-12-191-1/+1
| | | | | | | | Move the Journey code underneath the ActionDispatch namespace so that we don't pollute the global namespace with names that may be used for models. Fixes rails/journey#49.
* Merge pull request #8510 from thedarkone/thread_safety_improvementsAaron Patterson2012-12-141-8/+4
|\ | | | | Thread safety improvements
| * Replace some global Hash usages with the new thread safe cache.thedarkone2012-12-141-8/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary of the changes: * Add thread_safe gem. * Use thread safe cache for digestor caching. * Replace manual synchronization with ThreadSafe::Cache in Relation::Delegation. * Replace @attribute_method_matchers_cache Hash with ThreadSafe::Cache. * Use TS::Cache to avoid the synchronisation overhead on listener retrieval. * Replace synchronisation with TS::Cache usage. * Use a preallocated array for performance/memory reasons. * Update the controllers cache to the new AS::Dependencies::ClassCache API. The original @controllers cache no longer makes much sense after @tenderlove's changes in 7b6bfe84f3 and f345e2380c. * Use TS::Cache in the connection pool to avoid locking overhead. * Use TS::Cache in ConnectionHandler.
* | Clear url helper methods when routes are reloadedAndrew White2012-12-141-0/+6
| | | | | | | | | | Remove all the old url helper methods when clear! is called on the route set because it's possible that some routes have been removed.
* | Revert "Clear url helpers when reloading routes"Andrew White2012-12-141-1/+0
|/ | | | | | | | | | This doesn't actually remove old url helper methods as they are defined in a different module. This reverts commit 96bcef947bf713b7d9fc88f26dff69f568111262. Conflicts: actionpack/CHANGELOG.md
* Clear url helpers when reloading routesSantiago Pastorino2012-11-021-0/+1
|
* 1.9 hash syntax changes to docsAvnerCohen2012-10-311-6/+6
|
* Use internal instance variable naming scheme for mounted URL helper proxiesSam Pohlenz2012-09-091-1/+1
|
* refactor route_set `generate_extras` functionalityschneems2012-08-281-17/+9
| | | | | | The result of Generator with or without the @extras instance variable set contains the desired information. Rather than preserving state when initializing the original object, we can simply extract the keys from the resultant parameters. ATP Actionpack, railties
* Add Missing Keys from Journey on failed URL formatschneems2012-08-281-4/+4
| | | | | | | | | | | | | | | | | | | | | | | Many named routes have keys that are required to successfully resolve. If a key is left off like this: <%= link_to 'user', user_path %> This will produce an error like this: No route matches {:action=>"show", :controller=>"users"} Since we know that the :id is missing, we can add extra debugging information to the error message. No route matches {:action=>"show", :controller=>"users"} missing required keys: [:id] This will help new and seasoned developers look closer at their parameters. I've also subclassed the routing error to be clear that this error is a result of attempting to generate a url and not because the user is trying to visit a bad url. While this may sound trivial this error message is misleading and confuses most developers. The important part isn't what's in the options its's what's missing. Adding this information to the error message will make debugging much more obvious. This is the sister pull request of https://github.com/rails/journey/pull/44 which will be required to get they missing keys into the correct error message. Example Development Error in Rails: http://cl.ly/image/3S0T0n1T3421
* Further refactor build_conditions in route setCarlos Antonio da Silva2012-08-101-5/+3
| | | | | Return the conditions from the keep_if call, and ignore the value argument since it's not being used.
* Fix handling SCRIPT_NAME from within mounted engine'sPiotr Sarnacki2012-08-111-5/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When you mount your application at a path, for example /myapp, server should set SCRIPT_NAME to /myapp. With such information, rails application knows that it's mounted at /myapp path and it should generate routes relative to that path. Before this patch, rails handled SCRIPT_NAME correctly only for regular apps, but it failed to do it for mounted engines. The solution was to hardcode default_url_options[:script_name], which is not the best answer - it will work only when application is mounted at a fixed path. This patch fixes the situation by respecting original value of SCRIPT_NAME when generating application's routes from engine and the other way round - when you generate engine's routes from application. This is done by using one of 2 pieces of information in env - current SCRIPT_NAME or SCRIPT_NAME for a corresponding router. This is because we have 2 cases to handle: - generating engine's route from application: in this situation SCRIPT_NAME is basically SCRIPT_NAME set by the server and it indicates the place where application is mounted, so we can just pass it as :original_script_name in url_options. :original_script_name is used because if we use :script_name, router will ignore generating prefix for engine - generating application's route from engine: in this situation we already lost information about the SCRIPT_NAME that server used. For example if application is mounted at /myapp and engine is mounted at /blog, at this point SCRIPT_NAME is equal /myapp/blog. Because of that we need to keep reference to /myapp SCRIPT_NAME by binding it to the current router. Later on we can extract it and use when generating url Please note that starting from now you *should not* use default_url_options[:script_name] explicitly if your server already passes correct SCRIPT_NAME to rack env. (closes #6933)
* RouteSet: refactor internalsBogdan Gusiev2012-08-101-10/+7
| | | | | No need to build valid_conditions array. We can get all the data in place.
* RouteSet: cleanup some unneeded compexityBogdan Gusiev2012-08-041-16/+7
|
* Renamed _path_segments to _recallBogdan Gusiev2012-08-041-2/+2
|
* Simplify logical statementBogdan Gusiev2012-08-041-4/+2
|
* load active_support/core_ext/object/blank in active_support/railsXavier Noria2012-08-021-1/+0
|
* Fix class_eval without __FILE__ and __LINE__.kennyj2012-07-181-1/+1
|
* Revert "Allow loading external route files from the router"José Valim2012-06-291-2/+0
| | | | | | | | | | | | | | This reverts commit 6acebb38bc0637bc05c19d87f8767f16ce79189b. Usage of this feature did not reveal any improvement in existing apps. Conflicts: actionpack/lib/action_dispatch/routing/mapper.rb guides/source/routing.textile railties/lib/rails/engine.rb railties/lib/rails/paths.rb railties/test/paths_test.rb
* Simplify logic to initialize valid conditions in RouteSetCarlos Antonio da Silva2012-05-311-7/+3
| | | | | | Remove :to_sym call from public_instance_methods iteration, as such methods in Ruby 1.9 already return symbols. Initialize valid conditions with controller/action instead of setting them afterwards.
* Merge pull request #2549 from trek/RoutingErrorForMissingControllersAaron Patterson2012-05-211-3/+7
|\ | | | | When a route references a missing controller, raise ActionController::RoutingError with clearer message
| * When a route references a missing controller, raise ↵Trek Glowacki2011-08-161-3/+7
| | | | | | | | ActionController::RoutingError with a clearer message
* | Return 400 Bad Request for URL paths with invalid encoding.Andrew White2012-05-201-0/+9
| | | | | | | | | | | | | | | | | | Passing path parameters with invalid encoding is likely to trigger errors further on like `ArgumentError (invalid byte sequence in UTF-8)`. This will result in a 500 error whereas the better error to return is a 400 error which allows exception notification libraries to filter it out if they wish. Closes #4450
* | Don't ignore nil positional arguments for url helpers - fixes #6196.Andrew White2012-05-101-1/+1
| |
* | Refactor Generator class to not rely on in-place editing the controllerAndrew White2012-05-091-5/+10
| |
* | Fix bug when url_for changes controller.Nikita Beloglazov2012-05-091-2/+2
| |
* | Fix that optimized named routes should also work as singleton methods on the ↵Jeremy Kemper2012-05-061-1/+2
| | | | | | | | url_helpers module
* | RouteSet: optimize routes generation when globbing is usedBogdan Gusiev2012-05-031-2/+5
| |
* | RouteSet: remove some code dupsBogdan Gusiev2012-05-021-19/+10
| |
* | ActionPack routes: remove some useless code.Bogdan Gusiev2012-05-021-26/+4
| |
* | Allow loading external route files from the routerJose and Yehuda2012-04-251-0/+2
| | | | | | | | | | | | | | | | | | This feature enables the ability to load an external routes file from the router via: draw :filename External routes files go in +config/routes+. This feature works in both engines and applications.
* | Refactor hash creation in routesetCarlos Antonio da Silva2012-04-241-3/+4
| |
* | RouteSet: decomplecting a way to handle positional argsBogdan Gusiev2012-04-241-26/+20
| |
* | RouteSet: simplify routes helpers generation codeBogdan Gusiev2012-04-241-13/+21
| |
* | documents the contract for the argument of AD::Routing::RouteSet#url_forXavier Noria2012-04-051-0/+1
| |
* | Fix url_for when options is nilRafael Mendonça França2012-04-051-1/+1
| | | | | | | | | | RouteSet#url_for was modifying the options hash that belong to the caller
* | don't pass unnecessary argumentSergey Nartimov2012-03-021-2/+2
| |
* | Optimize url helpers.Sergey Nartimov + José Valim2012-03-021-9/+8
| |
* | Optimize path helpers.José Valim2012-03-021-11/+54
| |
* | Fix the assert_recognizes test method so that it works when there areMatt Fawcett2012-02-241-0/+2
| | | | | | | | constraints on the querystring. Issue #2781
* | Avoid inspecting the whole route set, closes #1525José Valim2012-02-231-0/+6
| |
* | Remove reference to rails_legacy_mapper, which isn't compatible with 3.2 #5022johndouthat2012-02-181-2/+1
| |
* | Fix GH #4720. Routing problem with nested namespace and already camelized ↵kennyj2012-02-101-0/+5
| | | | | | | | controller option.
* | Fixed force_ssl redirects to include original query paramsRyan McGeary2012-02-071-0/+1
| | | | | | | | | | | | | | | | | | | | `ActionController.force_ssl` redirects http URLs to their https equivalent; however, when a URL contains a query string, the resulting redirect lacked the original query string. Conflicts: actionpack/lib/action_controller/metal/force_ssl.rb
* | Fix url_for method's behavior when it is called with :controller option ↵kennyj2012-02-071-1/+1
| | | | | | | | | | | | which starts with "/" from multiple nested controller. Closes #3864
* | Merge pull request #3775 from karevn/masterAaron Patterson2012-01-241-1/+2
|\ \ | | | | | | Please pull my changes - they fix a rare problem with tests framework
| * | Fix: when using subdomains and constraints, request params were not passed ↵karevn2011-11-281-1/+2
| | | | | | | | | | | | to constraints callback
* | | Added custom regexps to ASTs that have literal nodes on either side ofAaron Patterson2012-01-231-1/+20
| | | | | | | | | | | | symbol nodes. Fixes #4585