Module: Breakpoint::CommandBundle
- Defined in:
- lib/breakpoint.rb
Defined Under Namespace
Classes: Client
Instance Method Summary collapse
-
#client ⇒ Object
Lets an object that will forward method calls to the breakpoint client.
-
#show_call_stack(depth = 10) ⇒ Object
Prints the call stack.
-
#show_source_list(context = 5) ⇒ Object
Prints the source code surrounding the location where the breakpoint was issued.
-
#source_lines(context = 5, return_line_numbers = false) ⇒ Object
Returns the source code surrounding the location where the breakpoint was issued.
Instance Method Details
#client ⇒ Object
Lets an object that will forward method calls to the breakpoint client. This is useful for outputting longer things at the client and so on. You can for example do these things:
client.puts "Hello" # outputs "Hello" at client console
# outputs "Hello" into the file temp.txt at the client
client.File.open("temp.txt", "w") { |f| f.puts "Hello" }
218 219 220 221 222 223 224 225 |
# File 'lib/breakpoint.rb', line 218 def client() if Breakpoint.use_drb? then sleep(0.5) until Breakpoint.drb_service.eval_handler Client.new(Breakpoint.drb_service.eval_handler) else Client.new(lambda { |code| eval(code, TOPLEVEL_BINDING) }) end end |
#show_call_stack(depth = 10) ⇒ Object
Prints the call stack.
200 201 202 203 204 205 206 207 208 209 |
# File 'lib/breakpoint.rb', line 200 def show_call_stack(depth = 10) base = Pathname.new(RAILS_ROOT).cleanpath.to_s caller[1..depth].each do |line| line.sub!(/^[^:]*/) do |path| Pathname.new(path).cleanpath.to_s end client.puts(line.index(base) == 0 ? line[(base.length + 1)..-1] : line) end "#{Pathname.new(@__bp_file).cleanpath.to_s}:#{@__bp_line}" end |
#show_source_list(context = 5) ⇒ Object
Prints the source code surrounding the location where the breakpoint was issued.
189 190 191 192 193 194 195 196 197 |
# File 'lib/breakpoint.rb', line 189 def show_source_list(context = 5) start_line, break_line, result = source_lines(context, true) offset = [(break_line + context).to_s.length, 4].max result.each_with_index do |line, i| mark = (start_line + i == break_line ? '->' : ' ') client.puts("%0#{offset}d%s#{line}" % [start_line + i, mark]) end Pathname.new(@__bp_file).cleanpath.to_s end |
#source_lines(context = 5, return_line_numbers = false) ⇒ Object
Returns the source code surrounding the location where the breakpoint was issued.
171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 |
# File 'lib/breakpoint.rb', line 171 def source_lines(context = 5, return_line_numbers = false) lines = File.readlines(@__bp_file).map { |line| line.chomp } break_line = @__bp_line start_line = [break_line - context, 1].max end_line = break_line + context result = lines[(start_line - 1) .. (end_line - 1)] if return_line_numbers then return [start_line, break_line, result] else return result end end |