aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller
diff options
context:
space:
mode:
authorMichael Koziarski <michael@koziarski.com>2007-09-03 00:18:30 +0000
committerMichael Koziarski <michael@koziarski.com>2007-09-03 00:18:30 +0000
commitf81dae3fca46c43d1fb6e4cb40734ef35623a72e (patch)
tree987017ae80580ee8f39c877a8f91c8b42eae14c5 /actionpack/lib/action_controller
parent6246fad19a5ec747f5914c142b8631af212d47ea (diff)
downloadrails-f81dae3fca46c43d1fb6e4cb40734ef35623a72e.tar.gz
rails-f81dae3fca46c43d1fb6e4cb40734ef35623a72e.tar.bz2
rails-f81dae3fca46c43d1fb6e4cb40734ef35623a72e.zip
Remove deprecated functionality from actionpack. Closes #8958 [lifofifo]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7403 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionpack/lib/action_controller')
-rwxr-xr-xactionpack/lib/action_controller/base.rb172
-rw-r--r--actionpack/lib/action_controller/benchmarking.rb4
-rw-r--r--actionpack/lib/action_controller/caching.rb2
-rw-r--r--actionpack/lib/action_controller/components.rb2
-rw-r--r--actionpack/lib/action_controller/layout.rb22
-rw-r--r--actionpack/lib/action_controller/rescue.rb2
6 files changed, 68 insertions, 136 deletions
diff --git a/actionpack/lib/action_controller/base.rb b/actionpack/lib/action_controller/base.rb
index 353f3f7330..e0474ff5b3 100755
--- a/actionpack/lib/action_controller/base.rb
+++ b/actionpack/lib/action_controller/base.rb
@@ -15,6 +15,8 @@ module ActionController #:nodoc:
end
class MissingTemplate < ActionControllerError #:nodoc:
end
+ class RenderError < ActionControllerError #:nodoc:
+ end
class RoutingError < ActionControllerError #:nodoc:
attr_reader :failures
def initialize(message, failures=[])
@@ -612,7 +614,7 @@ module ActionController #:nodoc:
def view_paths
self.class.view_paths
end
-
+
protected
# Renders the content that will be returned to the browser as the response body.
#
@@ -632,10 +634,6 @@ module ActionController #:nodoc:
# # but with a custom layout
# render :action => "long_goal", :layout => "spectacular"
#
- # _Deprecation_ _notice_: This used to have the signatures <tt>render_action("action", status = 200)</tt>,
- # <tt>render_without_layout("controller/action", status = 200)</tt>, and
- # <tt>render_with_layout("controller/action", status = 200, layout)</tt>.
- #
# === Rendering partials
#
# Partial rendering in a controller is most commonly used together with Ajax calls that only update one or a few elements on a page
@@ -702,8 +700,6 @@ module ActionController #:nodoc:
# # Renders a template relative to the template root and chooses the proper file extension
# render :file => "some/template", :use_full_path => true
#
- # _Deprecation_ _notice_: This used to have the signature <tt>render_file(path, status = 200)</tt>
- #
# === Rendering text
#
# Rendering of text is usually used for tests or for rendering prepared content, such as a cache. By default, text
@@ -729,8 +725,6 @@ module ActionController #:nodoc:
# # Renders "Hello from code!"
# render :text => proc { |response, output| output.write("Hello from code!") }
#
- # _Deprecation_ _notice_: This used to have the signature <tt>render_text("text", status = 200)</tt>
- #
# === Rendering JSON
#
# Rendering JSON sets the content type to text/x-json and optionally wraps the JSON in a callback. It is expected
@@ -760,8 +754,6 @@ module ActionController #:nodoc:
# # Renders "hello david"
# render :inline => "<%= 'hello ' + name %>", :locals => { :name => "david" }
#
- # _Deprecation_ _notice_: This used to have the signature <tt>render_template(template, status = 200, type = :rhtml)</tt>
- #
# === Rendering inline JavaScriptGenerator page updates
#
# In addition to rendering JavaScriptGenerator page updates with Ajax in RJS templates (see ActionView::Base for details),
@@ -777,25 +769,16 @@ module ActionController #:nodoc:
# All renders take the :status and :location options and turn them into headers. They can even be used together:
#
# render :xml => post.to_xml, :status => :created, :location => post_url(post)
- def render(options = nil, deprecated_status = nil, &block) #:doc:
+ def render(options = nil, &block) #:doc:
raise DoubleRenderError, "Can only render or redirect once per action" if performed?
if options.nil?
- return render_file(default_template_name, deprecated_status, true)
+ return render_for_file(default_template_name, nil, true)
else
- # Backwards compatibility
- unless options.is_a?(Hash)
- if options == :update
- options = { :update => true }
- else
- ActiveSupport::Deprecation.warn(
- "You called render('#{options}'), which is a deprecated API call. Instead you use " +
- "render :file => #{options}. Calling render with just a string will be removed from Rails 2.0.",
- caller
- )
-
- return render_file(options, deprecated_status, true)
- end
+ if options == :update
+ options = { :update => true }
+ elsif !options.is_a?(Hash)
+ raise RenderError, "You called render with invalid options : #{options}"
end
end
@@ -808,35 +791,45 @@ module ActionController #:nodoc:
end
if text = options[:text]
- render_text(text, options[:status])
+ render_for_text(text, options[:status])
else
if file = options[:file]
- render_file(file, options[:status], options[:use_full_path], options[:locals] || {})
+ render_for_file(file, options[:status], options[:use_full_path], options[:locals] || {})
elsif template = options[:template]
- render_file(template, options[:status], true)
+ render_for_file(template, options[:status], true)
elsif inline = options[:inline]
- render_template(inline, options[:status], options[:type], options[:locals] || {})
+ add_variables_to_assigns
+ render_for_text(@template.render_template(options[:type] || :erb, inline, nil, options[:locals] || {}), options[:status])
elsif action_name = options[:action]
- ActiveSupport::Deprecation.silence do
- render_action(action_name, options[:status], options[:layout])
- end
+ template = default_template_name(action_name.to_s)
+ if options[:layout] && !template_exempt_from_layout?(template)
+ render_with_a_layout(:file => template, :status => options[:status], :use_full_path => true, :layout => true)
+ else
+ render_with_no_layout(:file => template, :status => options[:status], :use_full_path => true)
+ end
elsif xml = options[:xml]
- render_xml(xml, options[:status])
+ response.content_type = Mime::XML
+ render_for_text(xml.respond_to?(:to_xml) ? xml.to_xml : xml, options[:status])
elsif json = options[:json]
- render_json(json, options[:callback], options[:status])
+ json = "#{options[:callback]}(#{json})" unless options[:callback].blank?
+ response.content_type = Mime::JSON
+ render_for_text(json, options[:status])
elsif partial = options[:partial]
partial = default_template_name if partial == true
+ add_variables_to_assigns
if collection = options[:collection]
- render_partial_collection(partial, collection, options[:spacer_template], options[:locals], options[:status])
+ render_for_text(@template.send(:render_partial_collection, partial, collection, options[:spacer_template], options[:locals]),
+ options[:status])
else
- render_partial(partial, ActionView::Base::ObjectWrapper.new(options[:object]), options[:locals], options[:status])
+ render_for_text(@template.send(:render_partial, partial, ActionView::Base::ObjectWrapper.new(options[:object]), options[:locals]),
+ options[:status])
end
elsif options[:update]
@@ -844,15 +837,15 @@ module ActionController #:nodoc:
@template.send :evaluate_assigns
generator = ActionView::Helpers::PrototypeHelper::JavaScriptGenerator.new(@template, &block)
- render_javascript(generator.to_s)
+ response.content_type = Mime::JS
+ render_for_text(generator.to_s)
elsif options[:nothing]
# Safari doesn't pass the headers of the return if the response is zero length
- render_text(" ", options[:status])
+ render_for_text(" ", options[:status])
else
- render_file(default_template_name, options[:status], true)
-
+ render_for_file(default_template_name, options[:status], true)
end
end
end
@@ -860,87 +853,13 @@ module ActionController #:nodoc:
# Renders according to the same rules as <tt>render</tt>, but returns the result in a string instead
# of sending it as the response body to the browser.
def render_to_string(options = nil, &block) #:doc:
- ActiveSupport::Deprecation.silence { render(options, &block) }
+ render(options, &block)
ensure
erase_render_results
forget_variables_added_to_assigns
reset_variables_added_to_assigns
end
- def render_action(action_name, status = nil, with_layout = true) #:nodoc:
- template = default_template_name(action_name.to_s)
- if with_layout && !template_exempt_from_layout?(template)
- render_with_layout(:file => template, :status => status, :use_full_path => true, :layout => true)
- else
- render_without_layout(:file => template, :status => status, :use_full_path => true)
- end
- end
-
- def render_file(template_path, status = nil, use_full_path = false, locals = {}) #:nodoc:
- add_variables_to_assigns
- assert_existence_of_template_file(template_path) if use_full_path
- logger.info("Rendering #{template_path}" + (status ? " (#{status})" : '')) if logger
- render_text(@template.render_file(template_path, use_full_path, locals), status)
- end
-
- def render_template(template, status = nil, type = :erb, local_assigns = {}) #:nodoc:
- add_variables_to_assigns
- render_text(@template.render_template(type, template, nil, local_assigns), status)
- end
-
- def render_text(text = nil, status = nil, append_response = false) #:nodoc:
- @performed_render = true
-
- response.headers['Status'] = interpret_status(status || DEFAULT_RENDER_STATUS_CODE)
-
- if append_response
- response.body ||= ''
- response.body << text.to_s
- else
- response.body = text.is_a?(Proc) ? text : text.to_s
- end
- end
-
- def render_javascript(javascript, status = nil, append_response = true) #:nodoc:
- response.content_type = Mime::JS
- render_text(javascript, status, append_response)
- end
-
- def render_xml(xml, status = nil) #:nodoc:
- response.content_type = Mime::XML
- render_text(xml.respond_to?(:to_xml) ? xml.to_xml : xml, status)
- end
-
- def render_json(json, callback = nil, status = nil) #:nodoc:
- json = "#{callback}(#{json})" unless callback.blank?
-
- response.content_type = Mime::JSON
- render_text(json, status)
- end
-
- def render_nothing(status = nil) #:nodoc:
- render_text(' ', status)
- end
-
- def render_partial(partial_path = default_template_name, object = nil, local_assigns = nil, status = nil) #:nodoc:
- add_variables_to_assigns
- render_text(@template.send(:render_partial, partial_path, object, local_assigns), status)
- end
-
- def render_partial_collection(partial_name, collection, partial_spacer_template = nil, local_assigns = nil, status = nil) #:nodoc:
- add_variables_to_assigns
- render_text(@template.send(:render_partial_collection, partial_name, collection, partial_spacer_template, local_assigns), status)
- end
-
- def render_with_layout(template_name = default_template_name, status = nil, layout = nil) #:nodoc:
- render_with_a_layout(template_name, status, layout)
- end
-
- def render_without_layout(template_name = default_template_name, status = nil) #:nodoc:
- render_with_no_layout(template_name, status)
- end
-
-
# Return a response that has no content (merely headers). The options
# argument is interpreted to be a hash of header names and values.
# This allows you to easily return a response that consists only of
@@ -1101,6 +1020,27 @@ module ActionController #:nodoc:
end
private
+
+ def render_for_file(template_path, status = nil, use_full_path = false, locals = {}) #:nodoc:
+ add_variables_to_assigns
+ assert_existence_of_template_file(template_path) if use_full_path
+ logger.info("Rendering #{template_path}" + (status ? " (#{status})" : '')) if logger
+ render_for_text(@template.render_file(template_path, use_full_path, locals), status)
+ end
+
+ def render_for_text(text = nil, status = nil, append_response = false) #:nodoc:
+ @performed_render = true
+
+ response.headers['Status'] = interpret_status(status || DEFAULT_RENDER_STATUS_CODE)
+
+ if append_response
+ response.body ||= ''
+ response.body << text.to_s
+ else
+ response.body = text.is_a?(Proc) ? text : text.to_s
+ end
+ end
+
def initialize_template_class(response)
raise "You must assign a template class through ActionController.template_class= before processing a request" unless @@template_class
diff --git a/actionpack/lib/action_controller/benchmarking.rb b/actionpack/lib/action_controller/benchmarking.rb
index 8e0d83c2d6..31fa5d940d 100644
--- a/actionpack/lib/action_controller/benchmarking.rb
+++ b/actionpack/lib/action_controller/benchmarking.rb
@@ -43,12 +43,12 @@ module ActionController #:nodoc:
protected
def render_with_benchmark(options = nil, deprecated_status = nil, &block)
unless logger
- render_without_benchmark(options, deprecated_status, &block)
+ render_without_benchmark(options, &block)
else
db_runtime = ActiveRecord::Base.connection.reset_runtime if Object.const_defined?("ActiveRecord") && ActiveRecord::Base.connected?
render_output = nil
- @rendering_runtime = Benchmark::measure{ render_output = render_without_benchmark(options, deprecated_status, &block) }.real
+ @rendering_runtime = Benchmark::measure{ render_output = render_without_benchmark(options, &block) }.real
if Object.const_defined?("ActiveRecord") && ActiveRecord::Base.connected?
@db_rt_before_render = db_runtime
diff --git a/actionpack/lib/action_controller/caching.rb b/actionpack/lib/action_controller/caching.rb
index 043b4ea761..3434f5f9da 100644
--- a/actionpack/lib/action_controller/caching.rb
+++ b/actionpack/lib/action_controller/caching.rb
@@ -232,7 +232,7 @@ module ActionController #:nodoc:
if cache = controller.read_fragment(cache_path.path)
controller.rendered_action_cache = true
set_content_type!(controller, cache_path.extension)
- controller.send(:render_text, cache)
+ controller.send(:render_for_text, cache)
false
else
controller.action_cache_path = cache_path
diff --git a/actionpack/lib/action_controller/components.rb b/actionpack/lib/action_controller/components.rb
index 93008ce444..dc3032219b 100644
--- a/actionpack/lib/action_controller/components.rb
+++ b/actionpack/lib/action_controller/components.rb
@@ -78,7 +78,7 @@ module ActionController #:nodoc:
# Renders the component specified as the response for the current method
def render_component(options) #:doc:
component_logging(options) do
- render_text(component_response(options, true).body, response.headers["Status"])
+ render_for_text(component_response(options, true).body, response.headers["Status"])
end
end
diff --git a/actionpack/lib/action_controller/layout.rb b/actionpack/lib/action_controller/layout.rb
index 027ae42aeb..ff4a4057a2 100644
--- a/actionpack/lib/action_controller/layout.rb
+++ b/actionpack/lib/action_controller/layout.rb
@@ -233,29 +233,23 @@ module ActionController #:nodoc:
end
protected
- def render_with_a_layout(options = nil, deprecated_status = nil, deprecated_layout = nil, &block) #:nodoc:
+ def render_with_a_layout(options = nil, &block) #:nodoc:
template_with_options = options.is_a?(Hash)
- if apply_layout?(template_with_options, options) && (layout = pick_layout(template_with_options, options, deprecated_layout))
+ if apply_layout?(template_with_options, options) && (layout = pick_layout(template_with_options, options))
assert_existence_of_template_file(layout)
options = options.merge :layout => false if template_with_options
logger.info("Rendering template within #{layout}") if logger
- if template_with_options
- content_for_layout = render_with_no_layout(options, &block)
- deprecated_status = options[:status] || deprecated_status
- else
- content_for_layout = render_with_no_layout(options, deprecated_status, &block)
- end
-
+ content_for_layout = render_with_no_layout(options, &block)
erase_render_results
add_variables_to_assigns
@template.instance_variable_set("@content_for_layout", content_for_layout)
response.layout = layout
- render_text(@template.render_file(layout, true), deprecated_status)
+ render_for_text(@template.render_file(layout, true))
else
- render_with_no_layout(options, deprecated_status, &block)
+ render_with_no_layout(options, &block)
end
end
@@ -272,10 +266,8 @@ module ActionController #:nodoc:
!template_exempt_from_layout?(default_template_name(options[:action] || options[:template]))
end
- def pick_layout(template_with_options, options, deprecated_layout)
- if deprecated_layout
- deprecated_layout
- elsif template_with_options
+ def pick_layout(template_with_options, options)
+ if template_with_options
case layout = options[:layout]
when FalseClass
nil
diff --git a/actionpack/lib/action_controller/rescue.rb b/actionpack/lib/action_controller/rescue.rb
index 3ab10107bf..8eb6379fcf 100644
--- a/actionpack/lib/action_controller/rescue.rb
+++ b/actionpack/lib/action_controller/rescue.rb
@@ -125,7 +125,7 @@ module ActionController #:nodoc:
@template.instance_variable_set("@contents", @template.render_file(template_path_for_local_rescue(exception), false))
response.content_type = Mime::HTML
- render_file(rescues_path("layout"), response_code_for_rescue(exception))
+ render_for_file(rescues_path("layout"), response_code_for_rescue(exception))
end
private