mirror of
https://github.com/github/rails.git
synced 2026-01-10 07:07:54 -05:00
Minimal base/new_base comparison
This commit is contained in:
34
actionpack/examples/minimal.rb
Normal file
34
actionpack/examples/minimal.rb
Normal file
@@ -0,0 +1,34 @@
|
||||
$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../lib"
|
||||
require 'action_controller'
|
||||
require 'action_controller/new_base' if ENV['NEW']
|
||||
require 'benchmark'
|
||||
|
||||
class BaseController < ActionController::Base
|
||||
def index
|
||||
render :text => ''
|
||||
end
|
||||
end
|
||||
|
||||
n = (ENV['N'] || 10000).to_i
|
||||
input = StringIO.new('')
|
||||
|
||||
def call_index(controller, input, n)
|
||||
n.times do
|
||||
controller.action(:index).call({ 'rack.input' => input })
|
||||
end
|
||||
|
||||
puts controller.name
|
||||
status, headers, body = controller.action(:index).call({ 'rack.input' => input })
|
||||
|
||||
puts status
|
||||
puts headers.to_yaml
|
||||
puts '---'
|
||||
body.each do |part|
|
||||
puts part
|
||||
end
|
||||
puts '---'
|
||||
end
|
||||
|
||||
elapsed = Benchmark.realtime { call_index BaseController, input, n }
|
||||
|
||||
puts "%dms elapsed, %d requests/sec" % [1000 * elapsed, n / elapsed]
|
||||
@@ -1,17 +0,0 @@
|
||||
$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../lib"
|
||||
require 'action_controller'
|
||||
|
||||
class PeopleController < ActionController::Base
|
||||
def index
|
||||
head :ok
|
||||
end
|
||||
end
|
||||
|
||||
status, headers, body = PeopleController.action(:index).call({ 'rack.input' => StringIO.new('') })
|
||||
|
||||
puts status
|
||||
puts headers.to_yaml
|
||||
puts '---'
|
||||
body.each do |part|
|
||||
puts part
|
||||
end
|
||||
@@ -1,3 +1,5 @@
|
||||
require 'active_support/core_ext/module/attr_internal'
|
||||
|
||||
module AbstractController
|
||||
class Error < StandardError; end
|
||||
|
||||
@@ -89,7 +91,7 @@ module AbstractController
|
||||
# you must handle it by also overriding process_action and
|
||||
# handling the case.
|
||||
def respond_to_action?(action_name)
|
||||
action_methods.include?(action_name) || respond_to?(:action_missing, true)
|
||||
action_methods.include?(action_name.to_s) || respond_to?(:action_missing, true)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
require 'active_support/core_ext/class/attribute_accessors'
|
||||
|
||||
module AbstractController
|
||||
module Logger
|
||||
extend ActiveSupport::DependencyModule
|
||||
@@ -6,4 +8,4 @@ module AbstractController
|
||||
cattr_accessor :logger
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
require 'action_controller/abstract'
|
||||
require 'active_support/core_ext/module/delegation'
|
||||
|
||||
module ActionController
|
||||
class Http < AbstractController::Base
|
||||
abstract!
|
||||
@@ -57,7 +60,7 @@ module ActionController
|
||||
|
||||
def self.action(name)
|
||||
@actions ||= {}
|
||||
@actions[name] ||= proc do |env|
|
||||
@actions[name.to_s] ||= proc do |env|
|
||||
new.call(name, env)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
require 'cgi'
|
||||
require 'uri'
|
||||
require 'set'
|
||||
|
||||
require 'active_support/core_ext/module/aliasing'
|
||||
require 'active_support/core_ext/module/attribute_accessors'
|
||||
|
||||
require 'action_controller/routing/optimisations'
|
||||
require 'action_controller/routing/routing_ext'
|
||||
require 'action_controller/routing/route'
|
||||
|
||||
Reference in New Issue
Block a user