mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Add ActionController::Renderers.remove.
This commit is contained in:
parent
dbbcc8388a
commit
ac36b45672
2 changed files with 35 additions and 0 deletions
|
@ -6,6 +6,11 @@ module ActionController
|
|||
Renderers.add(key, &block)
|
||||
end
|
||||
|
||||
# See <tt>Renderers.remove</tt>
|
||||
def self.remove_renderer(key)
|
||||
Renderers.remove(key)
|
||||
end
|
||||
|
||||
class MissingRenderer < LoadError
|
||||
def initialize(format)
|
||||
super "No renderer defined for format: #{format}"
|
||||
|
@ -83,6 +88,17 @@ module ActionController
|
|||
RENDERERS << key.to_sym
|
||||
end
|
||||
|
||||
# This method is the opposite of add method.
|
||||
#
|
||||
# Usage:
|
||||
#
|
||||
# ActionController::Renderers.remove(:csv)
|
||||
def self.remove(key)
|
||||
RENDERERS.delete(key.to_sym)
|
||||
method = "_render_option_#{key}"
|
||||
remove_method(method) if method_defined?(method)
|
||||
end
|
||||
|
||||
module All
|
||||
extend ActiveSupport::Concern
|
||||
include Renderers
|
||||
|
|
|
@ -643,6 +643,8 @@ class RespondWithControllerTest < ActionController::TestCase
|
|||
get :index, format: 'csv'
|
||||
assert_equal Mime::CSV, @response.content_type
|
||||
assert_equal "c,s,v", @response.body
|
||||
ensure
|
||||
ActionController::Renderers.remove :csv
|
||||
end
|
||||
|
||||
def test_raises_missing_renderer_if_an_api_behavior_with_no_renderer
|
||||
|
@ -652,6 +654,23 @@ class RespondWithControllerTest < ActionController::TestCase
|
|||
end
|
||||
end
|
||||
|
||||
def test_removing_renderers
|
||||
ActionController::Renderers.add :csv do |obj, options|
|
||||
send_data obj.to_csv, type: Mime::CSV
|
||||
end
|
||||
@controller = CsvRespondWithController.new
|
||||
@request.accept = "text/csv"
|
||||
get :index, format: 'csv'
|
||||
assert_equal Mime::CSV, @response.content_type
|
||||
|
||||
ActionController::Renderers.remove :csv
|
||||
assert_raise ActionController::MissingRenderer do
|
||||
get :index, format: 'csv'
|
||||
end
|
||||
ensure
|
||||
ActionController::Renderers.remove :csv
|
||||
end
|
||||
|
||||
def test_error_is_raised_if_no_respond_to_is_declared_and_respond_with_is_called
|
||||
@controller = EmptyRespondWithController.new
|
||||
@request.accept = "*/*"
|
||||
|
|
Loading…
Reference in a new issue