Class: ActionView::StreamingFlow
- Inherits:
-
OutputFlow
- Object
- OutputFlow
- ActionView::StreamingFlow
- Defined in:
- lib/action_view/flows.rb
Overview
:nodoc:
Instance Attribute Summary
Attributes inherited from OutputFlow
Instance Method Summary collapse
-
#append!(key, value) ⇒ Object
Appends the contents for the given key.
-
#get(key) ⇒ Object
Try to get an stored content.
-
#initialize(view, fiber) ⇒ StreamingFlow
constructor
A new instance of StreamingFlow.
Methods inherited from OutputFlow
Constructor Details
#initialize(view, fiber) ⇒ StreamingFlow
Returns a new instance of StreamingFlow.
33 34 35 36 37 38 39 40 |
# File 'lib/action_view/flows.rb', line 33 def initialize(view, fiber) @view = view @parent = nil @child = view.output_buffer @content = view.view_flow.content @fiber = fiber @root = Fiber.current.object_id end |
Instance Method Details
#append!(key, value) ⇒ Object
Appends the contents for the given key. This is called by provides and resumes back to the fiber if it is the key it is waiting for.
68 69 70 71 |
# File 'lib/action_view/flows.rb', line 68 def append!(key, value) super @fiber.resume if @waiting_for == key end |
#get(key) ⇒ Object
Try to get an stored content. If the content is not available and we are inside the layout fiber, we set that we are waiting for the given key and yield.
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/action_view/flows.rb', line 46 def get(key) return super if @content.key?(key) if inside_fiber? view = @view begin @waiting_for = key view.output_buffer, @parent = @child, view.output_buffer Fiber.yield ensure @waiting_for = nil view.output_buffer, @child = @parent, view.output_buffer end end super end |