class BetterErrors::REPL::Pry
Public Class Methods
new(binding, exception)
click to toggle source
# File lib/better_errors/pry/repl/pry.rb, line 39 def initialize(binding, exception) @fiber = Fiber.new do @pry.repl binding end @input = BetterErrors::REPL::Pry::Input.new @output = BetterErrors::REPL::Pry::Output.new @pry = ::Pry.new input: @input, output: @output @pry.hooks.clear_all if defined?(@pry.hooks.clear_all) store_last_exception exception @fiber.resume end
Public Instance Methods
prompt()
click to toggle source
# File lib/better_errors/pry/repl/pry.rb, line 63 def prompt if indent = @pry.instance_variable_get(:@indent) and !indent.indent_level.empty? ["..", indent.indent_level] else [">>", ""] end rescue [">>", ""] end
send_input(str)
click to toggle source
# File lib/better_errors/pry/repl/pry.rb, line 56 def send_input(str) local ::Pry.config, color: false, pager: false do @fiber.resume "#{str}\n" [@output.read_buffer, *prompt] end end
store_last_exception(exception)
click to toggle source
# File lib/better_errors/pry/repl/pry.rb, line 51 def store_last_exception(exception) return unless defined? ::Pry::LastException @pry.instance_variable_set(:@last_exception, ::Pry::LastException.new(exception.exception)) end
Private Instance Methods
local(obj, attrs) { || ... }
click to toggle source
# File lib/better_errors/pry/repl/pry.rb, line 74 def local(obj, attrs) old_attrs = {} attrs.each do |k, v| old_attrs[k] = obj.send k obj.send "#{k}=", v end yield ensure old_attrs.each do |k, v| obj.send "#{k}=", v end end