module RenderSync::Actions

Public Instance Methods

sync(resource, action, options = {}) click to toggle source

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
sync_destroy(resource, options = {}) click to toggle source

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
sync_new(resource, options = {}) click to toggle source

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
sync_update(resource, options = {}) click to toggle source

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

all_partials(resource, context, scope = nil) click to toggle source

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
specified_partials(resource, context, partial_name) click to toggle source

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
sync_render_context() click to toggle source

The Context class handling partial rendering

# File lib/render_sync/actions.rb, line 98
def sync_render_context
  @sync_render_context ||= Renderer.new
end