aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2014-05-20 11:10:52 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2014-05-20 11:10:52 -0700
commit74a847771ff35689ab4a98401ca83e0a0c4b0efa (patch)
tree55618f286dc137584f26b682f87f6e68a899ed76 /actionpack/lib
parente08696421f37d7c0cf488c40bf1c21520f1a0db5 (diff)
downloadrails-74a847771ff35689ab4a98401ca83e0a0c4b0efa.tar.gz
rails-74a847771ff35689ab4a98401ca83e0a0c4b0efa.tar.bz2
rails-74a847771ff35689ab4a98401ca83e0a0c4b0efa.zip
prepopulate the dispatch cache so we don't need the ThreadSafe cache.
Diffstat (limited to 'actionpack/lib')
-rw-r--r--actionpack/lib/action_dispatch/journey/visitors.rb16
1 files changed, 9 insertions, 7 deletions
diff --git a/actionpack/lib/action_dispatch/journey/visitors.rb b/actionpack/lib/action_dispatch/journey/visitors.rb
index 05ad619139..307830aa93 100644
--- a/actionpack/lib/action_dispatch/journey/visitors.rb
+++ b/actionpack/lib/action_dispatch/journey/visitors.rb
@@ -1,14 +1,10 @@
# encoding: utf-8
-require 'thread_safe'
-
module ActionDispatch
module Journey # :nodoc:
module Visitors # :nodoc:
class Visitor # :nodoc:
- DISPATCH_CACHE = ThreadSafe::Cache.new { |h,k|
- h[k] = :"visit_#{k}"
- }
+ DISPATCH_CACHE = {}
def accept(node)
visit(node)
@@ -38,8 +34,14 @@ module ActionDispatch
def visit_STAR(n); unary(n); end
def terminal(node); end
- %w{ LITERAL SYMBOL SLASH DOT }.each do |t|
- class_eval %{ def visit_#{t}(n); terminal(n); end }, __FILE__, __LINE__
+ def visit_LITERAL(n); terminal(n); end
+ def visit_SYMBOL(n); terminal(n); end
+ def visit_SLASH(n); terminal(n); end
+ def visit_DOT(n); terminal(n); end
+
+ private_instance_methods(false).each do |pim|
+ next unless pim =~ /^visit_(.*)$/
+ DISPATCH_CACHE[$1.to_sym] = pim
end
end