Commit Graph

52648 Commits

Author SHA1 Message Date
Aaron Patterson
559e7f9450 drop object allocation during routes setup
This commit introduces a functional Path AST visitor and implements
`each` on the AST in terms of the functional visitor.  The functional
visitor doesn't maintain state, so we only need to allocate one of them.

Given this benchmark route file:

```ruby
require 'action_pack'
require 'action_dispatch'

route_set = ActionDispatch::Routing::RouteSet.new
routes = ActionDispatch::Routing::Mapper.new route_set

ObjectSpace::AllocationTracer.setup(%i{path line type})

result = ObjectSpace::AllocationTracer.trace do
  500.times{|i|
    routes.resource :omglol
  }
end

result.find_all { |k,v| k.first =~ /git\/rails/ }.sort_by { |k,v|
  v.first
}.each { |k,v|
  p k => v
}
```

node.rb line 17 was in our top 3 allocation spot:

```
{["/Users/aaron/git/rails/actionpack/lib/action_dispatch/journey/nodes/node.rb", 17, :T_OBJECT]=>[31526, 0, 28329, 0, 2, 1123160]}
{["/Users/aaron/git/rails/actionpack/lib/action_dispatch/routing/mapper.rb", 2080, :T_IMEMO]=>[34002, 0, 30563, 0, 2, 1211480]}
{["/Users/aaron/git/rails/actionpack/lib/action_dispatch/routing/mapper.rb", 2071, :T_IMEMO]=>[121934, 1, 109608, 0, 7, 4344400]}
```

This commit eliminates allocations at that place.
2015-08-17 15:57:06 -07:00
Aaron Patterson
8d7b883f33 avoid is_a? checks
add another predicate method so we can avoid is_a checks
2015-08-17 15:28:23 -07:00
Aaron Patterson
56f734a361 pull RegexpOffsets in to a method
we don't really need this visitor
2015-08-17 15:11:20 -07:00
Aaron Patterson
15bc6b630f required_defaults is always passed in, remove conditional
Routes are always constructed with a list of required_defaults, so
there's no need to check whether or not it's nil
2015-08-17 15:11:20 -07:00
Rafael Mendonça França
0d4834583f Merge pull request #21276 from rodzyn/fix_build
Fix master build
2015-08-17 18:41:10 -03:00
Marcin Olichwirowicz
48a240bcbe Fix master build 2015-08-17 23:30:32 +02:00
Robin Dupret
b79ab88245 Merge pull request #21273 from piton4eg/patch-6
Small fixes [ci skip]
2015-08-17 23:12:07 +02:00
Aaron Patterson
d12ff4fa50 use predicate methods to avoid is_a? checks
we may want to change the name of the class at some point, so it's
better to use a predicate
2015-08-17 13:51:39 -07:00
Aaron Patterson
e9777ef62e default pattern to use a joined string
The string we create is almost always the same, so rather than joining
all the time, lets join once, then reuse that string everywhere.
2015-08-17 13:51:38 -07:00
Alexey Markov
76c2f01fcb Small fixes [ci skip] 2015-08-17 23:09:31 +03:00
Kasper Timm Hansen
65d3bf9153 Merge pull request #21270 from jonatack/update-debugging-guide-byebug-info
Update the Debugging Rails Guide [skip ci]
2015-08-17 22:01:24 +02:00
Kasper Timm Hansen
f7e625b222 Merge pull request #21244 from ronakjangir47/method_call_assertions_fix
Replacing lambda with proc getting argument error because of it.
2015-08-17 21:53:33 +02:00
Arun Agrawal
2778293ec5 Merge pull request #21272 from amitsuroliya/fix_docs
fix Docs [ci skip]
2015-08-17 21:30:16 +02:00
amitkumarsuroliya
bb289b9409 fix Docs [ci skip] 2015-08-18 00:41:17 +05:30
Richard Schneeman
54042c45e3 Merge pull request #21271 from amitsuroliya/typo_fix
typo fix [ci skip]
2015-08-17 13:54:33 -05:00
amitkumarsuroliya
f2c04d77ba typo fix [ci skip] 2015-08-18 00:02:16 +05:30
Jon Atack
60a3122171 Update the Debugging Rails Guide
[skip ci].

- Update to the current output when running `byebug help`.

- Remove the alias `exit` because it does not work and seems to have
been removed from Byebug, as confirmed by the source code here:
https://github.com/deivid-rodriguez/byebug/blob/master/lib/byebug/comman
ds/quit.rb

- Added the useful `q!` instead to avoid the "Really quit? (y/n)"
prompt.
2015-08-17 20:23:26 +02:00
Rafael Mendonça França
15fd2586a8 Merge pull request #21252 from rodzyn/improve_params_parser
Improve params parser
2015-08-17 13:20:09 -03:00
Ronak Jangir
e49c2cd743 Replacing lambda with proc getting argument error because of it. 2015-08-17 20:28:00 +05:30
Zachary Scott
7985908bea reorganize testing guide. [Zachary Scott & Yves Senn]
[ci skip]

Better reading flow for the information presented in this guide.
The first part is written in a similar fashion as the "Getting Started
Guide" and can be read from start to finish. The second section
introduces the different testing components that Rails provides and
explains how and when to use them.

The guide is still work in progress.
2015-08-17 16:23:59 +02:00
Rafael Mendonça França
b0cbfeb63e Merge pull request #21264 from jonatack/fix-action-controller-strong-params-typo
[skip ci] Fix minor typo
2015-08-17 11:07:47 -03:00
Jon Atack
51b237c955 [skip ci] Fix minor typo 2015-08-17 16:02:56 +02:00
Rafael Mendonça França
9356d9674f Merge pull request #21263 from printercu/patch-1
Fixed syslog example in production config template
2015-08-17 10:50:24 -03:00
printercu
0b7a37aa02 Fixed syslog example in production config template 2015-08-17 16:40:48 +03:00
Sean Griffin
249a06d3be Merge pull request #21135 from DropsOfSerenity/master
make disable_with default in submit_tag
2015-08-17 06:49:00 -06:00
Marcin Olichwirowicz
9366d622be Cleanup ActionDispatch:ParamsParser 2015-08-17 11:38:37 +02:00
Guillermo Iguaran
6c014a4900 Merge pull request #21258 from unfunco/plugin-semver-update
Plugins are generated with the version 0.1.0
2015-08-16 17:48:55 -05:00
Daniel Morris
0a888f0c0d Updated tests for the generated version number change 2015-08-16 23:45:55 +01:00
Rafael Mendonça França
3f866cbdab Fix typo on method name
[Robin Dupret]
2015-08-16 19:28:32 -03:00
Daniel Morris
c3a9e97f84 Plugins are generated with the version 0.1.0
The semantic versioning specification uses MAJOR.MINOR.PATCH – it would
make more sense to set the version to 0.1.0 for initial development
since a patch release cannot be created before a minor feature release.
2015-08-16 23:22:15 +01:00
Claudio B.
0e5ffa740c Merge pull request #21253 from vincefrancesi/date-helper-use-hidden-documentation
Documentation for ActionView::Helpers::DateHelper :use_hidden option
2015-08-16 08:41:20 -07:00
Robin Dupret
cbca29a959 Add a changelog entry for #21124 [ci skip]
[Kir Shatrov & Robin Dupret]
2015-08-16 14:42:09 +02:00
Robin Dupret
b803798b9d Tiny documentation fixes [ci skip]
* Add missing `def` and remove useless `do` keywords.
* Move `:nodoc:` in front of the methods' definition so that methods
  under these ones are correctly visible on the API.
2015-08-16 14:16:20 +02:00
Aaron Patterson
fe19d07138 move route allocation to a factory method on the mapping object
I would like to change the signature of the Route constructor.  Since
the mapping object has all the data required to construct a Route
object, move the allocation to a factory method.
2015-08-15 14:34:37 -07:00
Aaron Patterson
703275ba70 use the mapper to build the routing table
We should build the routes using the user facing API which is `Mapper`.
This frees up the library internals to change as we see fit. IOW we
shouldn't be testing internals.
2015-08-15 14:32:04 -07:00
Aaron Patterson
05eea6a2c3 only process via once
we can directly turn it in to a regular expression here, so we don't
need to test its value twice
2015-08-15 14:32:03 -07:00
eileencodes
2ae68eef39 Fix test assign_parameter method signature
Oops, I broke the build :(

Fixes the method signature of `assign_parameters` which now takes 6
arguments instead of 4. We likely will end up chaning the method
signature further so good to know this test is here.
2015-08-15 16:33:39 -04:00
Vince Francesi
cfde3786e7 Add documentation for ActionView::Helpers::DateHelper :use_hidden option [ci skip] 2015-08-15 12:36:54 -07:00
eileencodes
f6232a518b Refactor how assign_parameters sets generated_path & query_string_keys
This is part of a larger refactoring on controller tests. We needed to
move these methods here so that we could get rid of the `|| key ==
:action || key == :controller` in `assign_parameters`. We know this is
ugly and intend to fix it but for now `generate_extras` needs to be used
in the two methods to access the path and the query_string_keys.

We're adding `:controller` and `:action` to the `query_string_keys`
because we always need a controller and action. If someone passed
`action` or `controller` in in there test they are unambigious - we
know they have to go into the query params.
2015-08-15 13:23:41 -04:00
Rafael Mendonça França
8f1bbf6e82 Merge pull request #21248 from y-yagi/fix_deprecation_warning_in_aj_test
use `average_scheduled_poll_interval` option instead of deprecated `poll_interval`
2015-08-15 13:06:39 -03:00
Rafael Mendonça França
7858a365a9 Merge pull request #21247 from maclover7/rdoc-to-md
Convert Releasing Rails guide to Markdown
2015-08-15 13:01:58 -03:00
Rafael Mendonça França
8ec185a00b Merge pull request #21249 from rodzyn/initialize_symbols
Initialize symbols instead of mapping to_sym on the set of strings
2015-08-15 12:53:22 -03:00
Marcin Olichwirowicz
174b9a3097 Initialize symbols instead of mapping to_sym on the set of strings 2015-08-15 17:45:13 +02:00
yuuji.yaginuma
e875273ebc use average_scheduled_poll_interval option instead of deprecated poll_interval
this removes the following warning:

```
DEPRECATION: `config.poll_interval = 0.5` will be removed in Sidekiq 4. Please update to `config.average_scheduled_poll_interval = 0.5`.
```
2015-08-15 22:41:46 +09:00
maclover7
bbcbe6e9c8 Convert Releasing Rails guide to Markdown 2015-08-15 09:21:46 -04:00
Aaron Patterson
a293812bff only keep one hash of named routes
The outer router object already keeps a hash of named routes, so we
should just use that.
2015-08-14 18:06:48 -07:00
Claudio B.
09d846e7b8 Merge pull request #21240 from piton4eg/patch-5
Small fixes [ci skip]
2015-08-14 16:58:55 -07:00
Aaron Patterson
4bdd92d9fd rm add_route2
refactor the tests with a backwards compatible method call so we can rm
add_route2 from the journey router
2015-08-14 16:25:03 -07:00
Aaron Patterson
6c48d9392f pass pass the mapping object down the add_route stack
then we can let the mapping object derive stuff that the Route object
needs.
2015-08-14 16:13:26 -07:00
Aaron Patterson
5ba6966766 pass the mapping object to build_route
now that we aren't doing options manipulations, we can just pass the
mapping object down and read values from it.
2015-08-14 14:41:48 -07:00