aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller/base/metal.rb
diff options
context:
space:
mode:
authorYehuda Katz <wycats@gmail.com>2009-08-06 19:52:11 -0300
committerYehuda Katz <wycats@gmail.com>2009-08-06 19:52:11 -0300
commitbd6b61be88dfe6eb1ff1dcc5c17542d804a842c7 (patch)
tree13be5181476dc71aca97bbefb795eeb814949e0e /actionpack/lib/action_controller/base/metal.rb
parent52798fd479d4acbf823d093b03bdd1acf8e86b62 (diff)
downloadrails-bd6b61be88dfe6eb1ff1dcc5c17542d804a842c7.tar.gz
rails-bd6b61be88dfe6eb1ff1dcc5c17542d804a842c7.tar.bz2
rails-bd6b61be88dfe6eb1ff1dcc5c17542d804a842c7.zip
Rename /base to /metal and make base.rb and metal.rb top-level to reflect their module locations
Diffstat (limited to 'actionpack/lib/action_controller/base/metal.rb')
-rw-r--r--actionpack/lib/action_controller/base/metal.rb99
1 files changed, 0 insertions, 99 deletions
diff --git a/actionpack/lib/action_controller/base/metal.rb b/actionpack/lib/action_controller/base/metal.rb
deleted file mode 100644
index e7d776b63e..0000000000
--- a/actionpack/lib/action_controller/base/metal.rb
+++ /dev/null
@@ -1,99 +0,0 @@
-require 'action_controller/abstract'
-
-module ActionController
- # ActionController::Metal provides a way to get a valid Rack application from a controller.
- #
- # In AbstractController, dispatching is triggered directly by calling #process on a new controller.
- # ActionController::Metal provides an #action method that returns a valid Rack application for a
- # given action. Other rack builders, such as Rack::Builder, Rack::URLMap, and the Rails router,
- # can dispatch directly to the action returned by FooController.action(:index).
- class Metal < AbstractController::Base
- abstract!
-
- # :api: public
- attr_internal :params, :env
-
- # Returns the last part of the controller's name, underscored, without the ending
- # "Controller". For instance, MyApp::MyPostsController would return "my_posts" for
- # controller_name
- #
- # ==== Returns
- # String
- def self.controller_name
- @controller_name ||= controller_path.split("/").last
- end
-
- # Delegates to the class' #controller_name
- def controller_name
- self.class.controller_name
- end
-
- # Returns the full controller name, underscored, without the ending Controller.
- # For instance, MyApp::MyPostsController would return "my_app/my_posts" for
- # controller_name.
- #
- # ==== Returns
- # String
- def self.controller_path
- @controller_path ||= name && name.sub(/Controller$/, '').underscore
- end
-
- # Delegates to the class' #controller_path
- def controller_path
- self.class.controller_path
- end
-
- # The details below can be overridden to support a specific
- # Request and Response object. The default ActionController::Base
- # implementation includes RackConvenience, which makes a request
- # and response object available. You might wish to control the
- # environment and response manually for performance reasons.
-
- attr_internal :status, :headers, :content_type
-
- def initialize(*)
- @_headers = {}
- super
- end
-
- # Basic implementations for content_type=, location=, and headers are
- # provided to reduce the dependency on the RackConvenience module
- # in Renderer and Redirector.
-
- def content_type=(type)
- headers["Content-Type"] = type.to_s
- end
-
- def location=(url)
- headers["Location"] = url
- end
-
- # :api: private
- def call(name, env)
- @_env = env
- process(name)
- to_rack
- end
-
- # :api: private
- def to_rack
- [status, headers, response_body]
- end
-
- # Return a rack endpoint for the given action. Memoize the endpoint, so
- # multiple calls into MyController.action will return the same object
- # for the same action.
- #
- # ==== Parameters
- # action<#to_s>:: An action name
- #
- # ==== Returns
- # Proc:: A rack application
- def self.action(name)
- @actions ||= {}
- @actions[name.to_s] ||= proc do |env|
- new.call(name, env)
- end
- end
- end
-end