aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller/new_base
diff options
context:
space:
mode:
authorYehuda Katz <wycats@gmail.com>2009-05-02 02:15:09 -0700
committerYehuda Katz <wycats@gmail.com>2009-05-02 02:15:09 -0700
commit72160d9f89481ea60c8268ff026099f07b1e5ed6 (patch)
tree950b7516323658c7012e3ca742b7bd9930a83aa7 /actionpack/lib/action_controller/new_base
parentad2a1b5cb1afb0ea810cfdcac2ba1be95c55f1aa (diff)
downloadrails-72160d9f89481ea60c8268ff026099f07b1e5ed6.tar.gz
rails-72160d9f89481ea60c8268ff026099f07b1e5ed6.tar.bz2
rails-72160d9f89481ea60c8268ff026099f07b1e5ed6.zip
Implement FooController.action(:name)
* Rails actions are now Rack endpoints, and can be retrieved via FooController.action(name) and called with an env * Updated some tests that relied on the old internal #process/#call implementation
Diffstat (limited to 'actionpack/lib/action_controller/new_base')
-rw-r--r--actionpack/lib/action_controller/new_base/http.rb13
1 files changed, 10 insertions, 3 deletions
diff --git a/actionpack/lib/action_controller/new_base/http.rb b/actionpack/lib/action_controller/new_base/http.rb
index f663900944..b7e3bfaa7e 100644
--- a/actionpack/lib/action_controller/new_base/http.rb
+++ b/actionpack/lib/action_controller/new_base/http.rb
@@ -39,13 +39,20 @@ module ActionController
end
# :api: private
- def call(env)
+ def call(name, env)
@_request = ActionDispatch::Request.new(env)
@_response = ActionDispatch::Response.new
- process(@_request.parameters[:action])
+ process(name)
@_response.body = response_body
@_response.prepare!
- self
+ to_rack
+ end
+
+ def self.action(name)
+ @actions ||= {}
+ @actions[name] ||= proc do |env|
+ new.call(name, env)
+ end
end
# :api: private