Skip to content

Instantly share code, notes, and snippets.

@pietromoro
Last active December 27, 2022 06:22
Show Gist options
  • Save pietromoro/f13e5ee07537cec649d41b6827a03f99 to your computer and use it in GitHub Desktop.
Save pietromoro/f13e5ee07537cec649d41b6827a03f99 to your computer and use it in GitHub Desktop.
BeforeRender Callback as concern for rails controller(s). Use it with the same syntax used for other callbacks, just include in the controller. Fires after action but before rendering happens.
module BeforeRender
extend ActiveSupport::Concern
included do
alias_method :render_without_before_render_action, :render
alias_method :render, :render_with_before_render_action
define_callbacks :render
end
def render_with_before_render_action(*options, &block)
run_callbacks :render do
render_without_before_render_action *options, &block
end
end
module ClassMethods
def append_before_render_action(*names, &block)
_insert_callbacks(names, block) do |name, options|
set_callback :render, :before, name, options
end
end
def prepend_before_render_action(*names, &block)
_insert_callbacks(names, block) do |name, options|
set_callback :render, :before, name, options.merge(prepend: true)
end
end
def skip_before_render_action(*names, &block)
_insert_callbacks(names, block) do |name, options|
skip_callback :render, :before, name, options
end
end
alias_method :before_render, :append_before_render_action
alias_method :prepend_before_render, :prepend_before_render_action
alias_method :skip_before_render, :skip_before_render_action
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment