diff options
author | Jean Boussier <jean.boussier@gmail.com> | 2017-01-11 14:50:42 +0100 |
---|---|---|
committer | Jean Boussier <jean.boussier@gmail.com> | 2017-01-18 11:10:52 +0100 |
commit | 5b1332bb4d3c3aa5215b43004d1e7f6a8d376dd0 (patch) | |
tree | 7244c68a0ba7239a3893933a16ddb069ba04a170 /actionpack/lib/action_dispatch/journey/route.rb | |
parent | 299728de1da404d789752156a13828ec3b48f3d6 (diff) | |
download | rails-5b1332bb4d3c3aa5215b43004d1e7f6a8d376dd0.tar.gz rails-5b1332bb4d3c3aa5215b43004d1e7f6a8d376dd0.tar.bz2 rails-5b1332bb4d3c3aa5215b43004d1e7f6a8d376dd0.zip |
Fully initialize routes before the first request is handled
`AD::Journey::GTG::Simulator` is lazily built the first time
`Journey::Router#find_routes` is invoked, which happens when
the first request is served.
On large applications with many routes, building the simulator
can take several hundred milliseconds (~700ms for us).
Triggering this initialization during the boot process reduces
the impact of deploys on the application response time.
Diffstat (limited to 'actionpack/lib/action_dispatch/journey/route.rb')
-rw-r--r-- | actionpack/lib/action_dispatch/journey/route.rb | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/actionpack/lib/action_dispatch/journey/route.rb b/actionpack/lib/action_dispatch/journey/route.rb index f2ac4818d8..927fd369c4 100644 --- a/actionpack/lib/action_dispatch/journey/route.rb +++ b/actionpack/lib/action_dispatch/journey/route.rb @@ -73,6 +73,14 @@ module ActionDispatch @internal = internal end + def eager_load! + path.eager_load! + ast + parts + required_defaults + nil + end + def ast @decorated_ast ||= begin decorated_ast = path.ast |