aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/abstract_controller
diff options
context:
space:
mode:
authorŁukasz Strzałkowski <lukasz.strzalkowski@gmail.com>2013-09-03 15:03:56 +0200
committerŁukasz Strzałkowski <lukasz.strzalkowski@gmail.com>2013-09-03 15:03:56 +0200
commiteddf367b8948d23f65a68a27a8bd3071e8a3d48d (patch)
tree964ea60d5ccd73db9df2fdb47665b9e319488b1c /actionpack/lib/abstract_controller
parentd35cf4b6a0645dffb508ae1a5ad10924f7026f0f (diff)
downloadrails-eddf367b8948d23f65a68a27a8bd3071e8a3d48d.tar.gz
rails-eddf367b8948d23f65a68a27a8bd3071e8a3d48d.tar.bz2
rails-eddf367b8948d23f65a68a27a8bd3071e8a3d48d.zip
Move BasicRendering to AbstractController
Diffstat (limited to 'actionpack/lib/abstract_controller')
-rw-r--r--actionpack/lib/abstract_controller/rendering.rb28
1 files changed, 28 insertions, 0 deletions
diff --git a/actionpack/lib/abstract_controller/rendering.rb b/actionpack/lib/abstract_controller/rendering.rb
index 0a4b58de7f..4596aad46c 100644
--- a/actionpack/lib/abstract_controller/rendering.rb
+++ b/actionpack/lib/abstract_controller/rendering.rb
@@ -97,4 +97,32 @@ module AbstractController
options
end
end
+
+ # Basic rendering implements the most minimal rendering layer.
+ # It only supports rendering :text and :nothing. Passing any other option will
+ # result in `UnsupportedOperationError` exception. For more functionality like
+ # different formats, layouts etc. you should use `ActionView` gem.
+ module BasicRendering
+ extend ActiveSupport::Concern
+
+ # Render text or nothing (empty string) to response_body
+ # :api: public
+ def render(*args, &block)
+ super(*args, &block)
+ opts = args.first
+ if opts.has_key?(:text) && opts[:text].present?
+ self.response_body = opts[:text]
+ elsif opts.has_key?(:nothing) && opts[:nothing]
+ self.response_body = " "
+ else
+ raise UnsupportedOperationError
+ end
+ end
+
+ class UnsupportedOperationError < StandardError
+ def initialize
+ super "Unsupported render operation. BasicRendering supports only :text and :nothing options. For more, you need to include ActionView."
+ end
+ end
+ end
end