diff options
author | Yehuda Katz <wycats@gmail.com> | 2009-05-02 02:15:09 -0700 |
---|---|---|
committer | Yehuda Katz <wycats@gmail.com> | 2009-05-02 02:15:09 -0700 |
commit | 72160d9f89481ea60c8268ff026099f07b1e5ed6 (patch) | |
tree | 950b7516323658c7012e3ca742b7bd9930a83aa7 /actionpack/lib/action_controller/new_base | |
parent | ad2a1b5cb1afb0ea810cfdcac2ba1be95c55f1aa (diff) | |
download | rails-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.rb | 13 |
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 |