diff options
author | wycats <wycats@gmail.com> | 2010-03-07 06:24:30 -0800 |
---|---|---|
committer | wycats <wycats@gmail.com> | 2010-03-07 06:24:30 -0800 |
commit | 39d6f9e112f2320d8c2006ee3bcc160cfa761d0a (patch) | |
tree | 5c3e4434a5d76ceb7b8fd088d62809ef9a50f025 /actionpack/lib/action_dispatch/routing/mapper.rb | |
parent | a424f199a9143e7ea451ba6f5e7dc54eb6103988 (diff) | |
download | rails-39d6f9e112f2320d8c2006ee3bcc160cfa761d0a.tar.gz rails-39d6f9e112f2320d8c2006ee3bcc160cfa761d0a.tar.bz2 rails-39d6f9e112f2320d8c2006ee3bcc160cfa761d0a.zip |
Make many parts of Rails lazy. In order to facilitate this,
add lazy_load_hooks.rb, which allows us to declare code that
should be run at some later time. For instance, this allows
us to defer requiring ActiveRecord::Base at boot time purely
to apply configuration. Instead, we register a hook that should
apply configuration once ActiveRecord::Base is loaded.
With these changes, brings down total boot time of a
new app to 300ms in production and 400ms in dev.
TODO: rename base_hook
Diffstat (limited to 'actionpack/lib/action_dispatch/routing/mapper.rb')
-rw-r--r-- | actionpack/lib/action_dispatch/routing/mapper.rb | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/actionpack/lib/action_dispatch/routing/mapper.rb b/actionpack/lib/action_dispatch/routing/mapper.rb index 52e7b0e77d..52a8df4273 100644 --- a/actionpack/lib/action_dispatch/routing/mapper.rb +++ b/actionpack/lib/action_dispatch/routing/mapper.rb @@ -1,3 +1,5 @@ +require "active_support/core_ext/hash/except" + module ActionDispatch module Routing class Mapper @@ -85,7 +87,7 @@ module ActionDispatch end def requirements - @requirements ||= returning(@options[:constraints] || {}) do |requirements| + @requirements ||= (@options[:constraints] || {}).tap do |requirements| requirements.reverse_merge!(@scope[:constraints]) if @scope[:constraints] @options.each { |k, v| requirements[k] = v if v.is_a?(Regexp) } end |