module RenderSync::Actions
Public Instance Methods
Render all sync’d partials for resource to string and publish action to pubsub server with rendered resource messages
resource - The ActiveModel resource action - The Symbol action to publish. One of :update, :destroy options - The Hash of options
default_scope - The ActiveModel resource to scope the action channel to scope - Either a String, a symbol, an instance of ActiveModel or RenderSync::Scope or an Array containing a combination to scope the channel to. Will be concatenated to an optional default_scope
# File lib/render_sync/actions.rb, line 45 def sync(resource, action, options = {}) scope = options[:scope] partial_name = options[:partial] resources = [resource].flatten messages = resources.collect do |resource| if partial_name specified_partials(resource, sync_render_context, partial_name).collect do |partial| partial.message(action) end else all_partials(resource, sync_render_context, scope).collect do |partial| partial.message(action) end end end RenderSync.client.batch_publish(messages.flatten) end
Render all sync’d partials for resource to string and publish destroy action to pubsub server with rendered resource messages
resource - The ActiveModel resource options - The Hash of options
default_scope - The ActiveModel resource to scope the update channel to scope - Either a String, a symbol, an instance of ActiveModel or RenderSync::Scope or an Array containing a combination to scope the destroy channel to. Will be concatenated to an optional default_scope
# File lib/render_sync/actions.rb, line 30 def sync_destroy(resource, options = {}) sync resource, :destroy, options end
Render all sync’d partials for resource to string and publish new action to pubsub server with rendered resource messages
resource - The ActiveModel resource, or Array of ActiveModel resources action - The Symbol action to publish. One of :update, :destroy options - The Hash of options
default_scope - The ActiveModel resource to scope the new channel to scope - Either a String, a symbol, an instance of ActiveModel or RenderSync::Scope or an Array containing any combination to scope the new channel to. Will be concatenated to an optional default_scope
# File lib/render_sync/actions.rb, line 76 def sync_new(resource, options = {}) scope = options[:scope] partial_name = options[:partial] resources = [resource].flatten messages = resources.collect do |resource| if partial_name specified_partials(resource, sync_render_context, partial_name).collect do |partial| partial.creator_for_scope(scope).message end else all_partials(resource, sync_render_context, scope).collect do |partial| partial.creator_for_scope(scope).message end end end RenderSync.client.batch_publish(messages.flatten) end
Render all sync’d partials for resource to string and publish update action to pubsub server with rendered resource messages
resource - The ActiveModel resource options - The Hash of options
default_scope - The ActiveModel resource to scope the update channel to scope - Either a String, a symbol, an instance of ActiveModel or RenderSync::Scope or an Array containing a combination to scope the update channel to. Will be concatenated to an optional default_scope
# File lib/render_sync/actions.rb, line 15 def sync_update(resource, options = {}) sync resource, :update, options end
Private Instance Methods
Returns Array of Partials for all given resource and context, including both Partial
and RefetchPartial
instances
# File lib/render_sync/actions.rb, line 104 def all_partials(resource, context, scope = nil) Partial.all(resource, context, scope) + RefetchPartial.all(resource, context, scope) end
Returns an Array containing both the Partial
and RefetchPartial
instances for a given resource, context and partial name
# File lib/render_sync/actions.rb, line 110 def specified_partials(resource, context, partial_name) [Partial.find(resource, partial_name, context), RefetchPartial.find(resource, partial_name, context)].compact end
The Context class handling partial rendering
# File lib/render_sync/actions.rb, line 98 def sync_render_context @sync_render_context ||= Renderer.new end