Module: Upkeep::Rails::ActionViewCapture::ViewHelpers

Defined in:
lib/upkeep/rails/action_view_capture.rb

Constant Summary collapse

UPKEEP_FRAME_BLOCK_ERROR =
"upkeep_frame requires a block. Use: " \
'<%= upkeep_frame("frame-name") do %> ... <% end %>'

Instance Method Summary collapse

Instance Method Details

#upkeep_frame(site_id, manifest_path: nil, manifest_fingerprint: nil, &block) ⇒ String, ActiveSupport::SafeBuffer

Advanced escape hatch for a custom render-site frame.

Ordinary Rails ERB does not need this helper. Upkeep instruments safe partial collection renders automatically and inserts the internal markers needed for page, fragment, and render-site delivery.

Use this only when a generated/helper-built boundary cannot be derived from template source. The helper is output-producing and returns the rendered block:

<%= upkeep_frame "cards" do %>
  <%= render partial: "cards/card", collection: @cards, as: :card %>
<% end %>

Manual callers are responsible for rendering a stable DOM target for the site. Instrumented templates add that target automatically for normal render sites.

Parameters:

  • site_id (#to_s)

    stable application id for this frame.

  • manifest_path (String, nil) (defaults to: nil)

    template manifest path for replay diagnostics.

  • manifest_fingerprint (String, nil) (defaults to: nil)

    template manifest fingerprint for replay diagnostics.

Returns:

  • (String, ActiveSupport::SafeBuffer)

    rendered block HTML.

Raises:

  • (ArgumentError)

    when called without a block.



770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
# File 'lib/upkeep/rails/action_view_capture.rb', line 770

def upkeep_frame(site_id, manifest_path: nil, manifest_fingerprint: nil, &block)
  raise ArgumentError, UPKEEP_FRAME_BLOCK_ERROR unless block

  html = Upkeep::Rails::ActionViewCapture.with_render_site(
    {
      site_id: site_id,
      manifest_path: manifest_path,
      manifest_fingerprint: manifest_fingerprint
    }.compact
  ) do
    capture(&block)
  end

  html.respond_to?(:html_safe) ? html.html_safe : html
end

#upkeep_frame_idString

Returns the stable DOM id for the current fragment frame.

Normal partials do not need to call this directly; Upkeep’s source instrumentation adds fragment-frame markers while rendering captured partial or fragment templates. This helper is available for custom/generated markup that must emit the marker explicitly.

Returns:

  • (String)

Raises:

  • (RuntimeError)

    when called outside an Upkeep frame render.



742
743
744
745
# File 'lib/upkeep/rails/action_view_capture.rb', line 742

def upkeep_frame_id
  Upkeep::Rails::ActionViewCapture.current_frame_id ||
    raise("upkeep_frame_id is only available while rendering an Upkeep frame")
end

#upkeep_page_frame_idString

Returns the stable DOM id for the current page frame.

Normal templates do not need to call this directly; Upkeep’s source instrumentation adds page-frame markers while rendering captured page templates. This helper is available for custom/generated markup that must emit the marker explicitly.

Returns:

  • (String)

Raises:

  • (RuntimeError)

    when called outside an Upkeep page frame render.



728
729
730
731
# File 'lib/upkeep/rails/action_view_capture.rb', line 728

def upkeep_page_frame_id
  Upkeep::Rails::ActionViewCapture.current_frame_id ||
    raise("upkeep_page_frame_id is only available while rendering an Upkeep page frame")
end