aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib
diff options
context:
space:
mode:
authorYehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com>2009-05-21 14:51:29 -0700
committerYehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com>2009-05-21 14:51:29 -0700
commitad1c90de3a766d12a0906c7cf3772f3bc0e1b445 (patch)
tree911b2e0b1daa62372f1c83c98640f6e968696c6f /actionpack/lib
parent2daac47d585c5b8f37e4749d6a9a3aea4b989bd0 (diff)
downloadrails-ad1c90de3a766d12a0906c7cf3772f3bc0e1b445.tar.gz
rails-ad1c90de3a766d12a0906c7cf3772f3bc0e1b445.tar.bz2
rails-ad1c90de3a766d12a0906c7cf3772f3bc0e1b445.zip
Added the :xml render option
Diffstat (limited to 'actionpack/lib')
-rw-r--r--actionpack/lib/action_controller/new_base/base.rb2
-rw-r--r--actionpack/lib/action_controller/new_base/render_options.rb30
-rw-r--r--actionpack/lib/action_controller/new_base/renderer.rb3
3 files changed, 27 insertions, 8 deletions
diff --git a/actionpack/lib/action_controller/new_base/base.rb b/actionpack/lib/action_controller/new_base/base.rb
index 6e1f92c45d..08ffafb27e 100644
--- a/actionpack/lib/action_controller/new_base/base.rb
+++ b/actionpack/lib/action_controller/new_base/base.rb
@@ -11,8 +11,8 @@ module ActionController
include ActionController::UrlFor
include ActionController::Redirector
include ActionController::Renderer
- include ActionController::RenderOptions
include ActionController::Renderers::Json
+ include ActionController::Renderers::Xml
include ActionController::Layouts
include ActionController::ConditionalGet
diff --git a/actionpack/lib/action_controller/new_base/render_options.rb b/actionpack/lib/action_controller/new_base/render_options.rb
index e7ed2bd278..a9ac0e0a41 100644
--- a/actionpack/lib/action_controller/new_base/render_options.rb
+++ b/actionpack/lib/action_controller/new_base/render_options.rb
@@ -18,15 +18,23 @@ module ActionController
end
end
- module Renderers
- module Json
+ module RenderOption
+ extend ActiveSupport::DependencyModule
+
+ included do
extend ActiveSupport::DependencyModule
-
depends_on RenderOptions
-
- included do
- _renderers << :json
+
+ def self.register_renderer(name)
+ included { _renderers << name }
end
+ end
+ end
+
+ module Renderers
+ module Json
+ include RenderOption
+ register_renderer :json
def _render_json(json, options)
json = ActiveSupport::JSON.encode(json) unless json.respond_to?(:to_str)
@@ -35,5 +43,15 @@ module ActionController
self.response_body = json
end
end
+
+ module Xml
+ include RenderOption
+ register_renderer :xml
+
+ def _render_xml(xml, options)
+ response.content_type ||= Mime::XML
+ self.response_body = xml.respond_to?(:to_xml) ? xml.to_xml : xml
+ end
+ end
end
end \ No newline at end of file
diff --git a/actionpack/lib/action_controller/new_base/renderer.rb b/actionpack/lib/action_controller/new_base/renderer.rb
index 840168397d..2a52eedb59 100644
--- a/actionpack/lib/action_controller/new_base/renderer.rb
+++ b/actionpack/lib/action_controller/new_base/renderer.rb
@@ -79,9 +79,10 @@ module ActionController
end
def _process_options(options)
- status, content_type = options.values_at(:status, :content_type)
+ status, content_type, location = options.values_at(:status, :content_type, :location)
response.status = status.to_i if status
response.content_type = content_type if content_type
+ response.headers["Location"] = url_for(location) if location
end
end
end