class Pry::Visualizer
Manages a websocket server
Constants
- VERSION
Public Class Methods
new()
click to toggle source
# File lib/pry/visualizer.rb, line 14 def initialize @commands = [] Pry.hooks.add_hook(:when_started, :viz_init) do |output, _binding, _pry| start_server end Pry.hooks.add_hook(:before_eval, :viz_before) do |code, _pry| @commands << { id: @commands.size, code: code, start: Time.now } end Pry.hooks.add_hook(:after_eval, :viz_after) do |result, _pry| @commands[-1].merge!( end: Time.now, result: result ) # send data to websocket @sock && begin @sock.send_data(JSON.generate({ command: @commands[-1] })) end end end
Public Instance Methods
call(env)
click to toggle source
Rack App
# File lib/pry/visualizer.rb, line 43 def call(env) @sock = Tubesock.hijack(env) @sock.onclose do ActiveRecord::Base.clear_active_connections! if defined? ActiveRecord end @sock.listen [-1, {}, []] end
start_server()
click to toggle source
# File lib/pry/visualizer.rb, line 38 def start_server Thread.new { Rack::Handler::Puma.run(self, Port: ENV['PORT'] || 3000) } end