From f81dae3fca46c43d1fb6e4cb40734ef35623a72e Mon Sep 17 00:00:00 2001 From: Michael Koziarski Date: Mon, 3 Sep 2007 00:18:30 +0000 Subject: Remove deprecated functionality from actionpack. Closes #8958 [lifofifo] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7403 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/lib/action_controller/base.rb | 172 ++++++++--------------- actionpack/lib/action_controller/benchmarking.rb | 4 +- actionpack/lib/action_controller/caching.rb | 2 +- actionpack/lib/action_controller/components.rb | 2 +- actionpack/lib/action_controller/layout.rb | 22 +-- actionpack/lib/action_controller/rescue.rb | 2 +- 6 files changed, 68 insertions(+), 136 deletions(-) (limited to 'actionpack/lib/action_controller') 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 render_action("action", status = 200), - # render_without_layout("controller/action", status = 200), and - # render_with_layout("controller/action", status = 200, layout). - # # === 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 render_file(path, status = 200) - # # === 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 render_text("text", status = 200) - # # === 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 render_template(template, status = 200, type = :rhtml) - # # === 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 render, 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 -- cgit v1.2.3