module WebConsole::ControllerHelpers

Public Instance Methods

console(binding = nil) click to toggle source

Helper for capturing a controller binding to prepare for console rendering.

# File lib/web_console/controller_helpers.rb, line 17
def console(binding = nil)
  @_console_binding = binding || ::Kernel.binding.of_caller(1)
end

Private Instance Methods

can_render_console?() click to toggle source
# File lib/web_console/controller_helpers.rb, line 34
def can_render_console?
  console_binding && !console_already_rendered && html_format? && whitelisted_ip?
end
html_format?() click to toggle source
# File lib/web_console/controller_helpers.rb, line 38
def html_format?
  content_type == Mime::HTML
end
inject_console_into_view() click to toggle source

Attempt to inject an interactive console to a view.

# File lib/web_console/controller_helpers.rb, line 24
def inject_console_into_view
  return unless can_render_console?

  console_html = ActionView::Base.new(ActionController::Base.view_paths,
    console_session: REPLSession.create(binding: @_console_binding)
  ).render(partial: 'rescues/web_console')

  response.body = response.body + console_html
end
whitelisted_ip?() click to toggle source
# File lib/web_console/controller_helpers.rb, line 42
def whitelisted_ip?
  request.remote_ip.in?(WebConsole.config.whitelisted_ips)
end