aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch/journey
Commit message (Collapse)AuthorAgeFilesLines
* Revert "Don't remove trailing slash from PATH_INFO for mounted apps"Piotr Sarnacki2014-01-161-7/+1
| | | | | | | The revert is needed because of a regression described in #13369, routes with trailing slash are no longer recognized properly. This reverts commit 50311f1391ddd8e0349d74eb57f04b7e0045a27d.
* Show full route constraints in error messageAndrew White2014-01-051-2/+2
| | | | | | | | When an optimized helper fails to generate, show the full route constraints in the error message. Previously it would only show the contraints that were required as part of the path. Fixes #13592
* Use a custom route vistor for optimized route generationAndrew White2014-01-051-4/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Using a Regexp to replace dynamic segments in a path string is fraught with difficulty and can lead to odd edge cases like #13349. Since we already have a parsed representation of the path it makes sense to use that to generate an array of segments that can be used to build an optimized route's path quickly. Tests on a simple route (e.g. /posts/:id) show a speedup of 35%: https://gist.github.com/pixeltrix/8261932 Calculating ------------------------------------- Current Helper: 5274 i/100ms New Helper: 8050 i/100ms ------------------------------------------------- Current Helper: 79263.6 (±3.7%) i/s - 395550 in 4.997252s New Helper: 153464.5 (±4.9%) i/s - 772800 in 5.047834s Tests on a more complex route show even an greater performance boost: https://gist.github.com/pixeltrix/8261957 Calculating ------------------------------------- Current Helper: 2367 i/100ms New Helper: 5382 i/100ms ------------------------------------------------- Current Helper: 29506.0 (±3.2%) i/s - 149121 in 5.059294s New Helper: 78815.5 (±4.1%) i/s - 398268 in 5.062161s It also has the added benefit of fixing the edge cases described above. Fixes #13349
* Spelling and Grammar checksAkshay Vishnoi2013-12-121-1/+1
|
* Revert "Merge pull request #12990 from vipulnsward/remove_visualizer_param"Rafael Mendonça França2013-11-211-1/+1
| | | | | | | | | | | This reverts commit 5a19346d2855ecb1c791cdef3af92589566d00db, reversing changes made to d82588ee4756b03025813b3997f4db171ee0fcdc. This argument is being used in the view https://github.com/rails/rails/blob/5a19346d2855ecb1c791cdef3af92589566d00db/actionpack/lib/action_dispatch/journey/visualizer/index.html.erb#L4 It is being set using the binding https://github.com/rails/rails/blob/5a19346d2855ecb1c791cdef3af92589566d00db/actionpack/lib/action_dispatch/journey/gtg/transition_table.rb#L108
* Remove unused param `title`to `TransitionTable#visualizer`Vipul A M2013-11-221-1/+1
|
* Eliminate `JSON.{parse,load,generate,dump}` and `def to_json`Godfrey Chan2013-11-051-5/+3
| | | | | | | | | | | | | | | JSON.{dump,generate} offered by the JSON gem is not compatiable with Rails at the moment and can cause a lot of subtle bugs when passed certain data structures. This changed all direct usage of the JSON gem in internal Rails code to always go through AS::JSON.{decode,encode}. We also shouldn't be implementing `to_json` most of the time, and these occurances are replaced with an equivilent `as_json` implementation to avoid problems down the road. See [1] for all the juicy details. [1]: intridea/multi_json#138 (comment)
* Correct error in Utils.normalize_path that changed paths improperlyJosh Symonds2013-10-231-1/+1
|
* Make GTG::TransTable thread safe.thedarkone2013-09-281-12/+23
| | | | From now on only the `[]=` method is allowed to modify the internal states hashes.
* Replace global Hash with TS::Cache.thedarkone2013-09-281-1/+4
|
* No need the else clauseRafael Mendonça França2013-09-241-2/+0
|
* Use join to concat the both side of the ASTRafael Mendonça França2013-09-241-1/+2
| | | | Onf of the sides can be nil and it will raise a Conversion error
* Merge pull request #9155 from bogdan/route-formatterAndrew White2013-09-221-23/+23
|\ | | | | Rewrite Journey::Visitors::Formatter for performance
| * Rewrite journey routes formatter for performanceBogdan Gusiev2013-08-281-23/+23
| |
* | [ci skip] Add some comment about downcase url encoded string.kennyj2013-09-221-0/+2
| |
* | Remove 1.8 compatible codekennyj2013-09-191-1/+1
| |
* | Fix an issue where router can't recognize downcased url encoding path.kennyj2013-09-191-0/+1
|/
* Clear named routes when routes.rb is reloadedAndrew White2013-07-211-0/+1
| | | | | | | | Fix an issue where Journey was failing to clear the named routes hash when the routes were reloaded and since it doesn't overwrite existing routes then if a route changed but wasn't renamed it kept the old definition. This was being masked by the optimised url helpers so it only became apparent when passing an options hash to the url helper.
* Skip Rack applications and redirects when generating urlsAndrew White2013-07-162-1/+17
| | | | | | | | | | When generating an unnamed url (i.e. using `url_for` with an options hash) we should skip anything other than standard Rails routes otherwise it will match the first mounted application or redirect and generate a url with query parameters rather than raising an error if the options hash doesn't match any defined routes. Fixes #8018
* store a symbol directly inside DISPATCH_CACHE for extra roflscaleCharlie Somerville2013-06-301-1/+1
|
* Don't remove trailing slash from PATH_INFO for mounted appsPiotr Sarnacki2013-06-211-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | Previously when app was mounted as following: class Foo def call(env) [200, {}, [env['PATH_INFO']]] end end RackMountRailsBug::Application.routes.draw do mount RackTest.new => "/foo" end trailing slash was removed from PATH_INFO. For example requesting GET /foo/bar/ on routes defined above would result in a response containing "/foo/bar" instead of "/foo/bar/". This commit fixes the issue. (closes #3215)
* rails -> Rails [ci skip]Prathamesh Sonpatki2013-05-091-1/+1
|
* add missing semicolon to journey parser.yBen Holley2013-04-301-0/+1
|
* Passing subdomain: '' to url_for removes the subdomain (instead of adding a ↵Derek Watson2013-04-181-0/+4
| | | | | | leading .) Adding a boolean route constraint checks for presence/absence of request property
* make [] method in router more readablebuddhamagnet2013-04-151-1/+3
|
* Mark unused variables and make some style fixesAgis Anastasopoulos2013-04-081-1/+1
| | | | It'd be a nice convention to mark the unused variables like this, now that Ruby 2 will issue no warnings for such vars being unused.
* Use custom visitor class for optimized url helpersAndrew White2013-03-032-0/+12
| | | | | | | | Rather than trying to use gsub to remove the optional route segments, which will fail with nested optional segments, use a custom visitor class that returns a empty string for group nodes. Closes #9524
* Make ActionDispatch::Journey::Path::Pattern#new raise more meaningful ↵zires2013-02-271-1/+1
| | | | exception message.
* Change the behavior of route defaultsAndrew White2013-01-151-4/+7
| | | | | | | | | | | | | | | | | | | 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
* Add support for other types of routing constraintsAndrew White2013-01-152-10/+25
| | | | | | | | | | | | | | This now allows the use of arrays like this: get '/foo/:action', to: 'foo', constraints: { subdomain: %w[www admin] } or constraints where the request method returns an Fixnum like this: get '/foo', to: 'foo#index', constraints: { port: 8080 } Note that this only applies to constraints on the request - path constraints still need to be specified as Regexps as the various constraints are compiled into a single Regexp.
* Raise correct exception now Journey is integrated.Andrew White2013-01-151-1/+6
| | | | | | | 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.
* access `@path` and `@routes` via reader methods in journeyGosha Arinich2013-01-072-3/+3
|
* refactor Journey::RoutesGosha Arinich2013-01-071-12/+11
| | | | | * prefer do-end for multiline blocks * prefer or-equals over returns with checks
* Refactor to not call path.ast twiceCarlos Antonio da Silva2013-01-061-2/+3
|
* refactor Route#ast to use or-equals and block, instead of return with a condGosha Arinich2013-01-061-5/+4
|
* remove another unnecessary dupGosha Arinich2013-01-021-5/+3
|
* remove unnecessary #dupGosha Arinich2013-01-021-2/+1
|
* Fix indentation issuing warningCarlos Antonio da Silva2012-12-201-1/+1
|
* update AD::Journey to follow Rails coding conventionsFrancesco Rodriguez2012-12-2016-437/+439
|
* :nodoc: Journey because is not part of the public API [ci skip]Francesco Rodriguez2012-12-1920-78/+75
|
* remove code for Ruby 1.8.x supportFrancesco Rodriguez2012-12-191-7/+2
|
* Remove the actual extension file as well [ci skip]Andrew White2012-12-191-11/+0
|
* Remove obsolete Hash extension needed for Ruby 1.8.x supportAndrew White2012-12-191-1/+0
| | | | [ci skip]
* Integrate Journey into Action DispatchAndrew White2012-12-1925-0/+2333
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.