Class: Byebug::TracevarCommand
- Defined in:
- lib/byebug/commands/tracevar.rb
Overview
Show (and possibily stop) at every line that changes a global variable.
Instance Attribute Summary
Attributes inherited from Command
Class Method Summary collapse
Instance Method Summary collapse
Methods inherited from Command
#arguments, columnize, #context, #frame, help, #initialize, match, to_s
Methods included from Helpers::StringHelper
#camelize, #deindent, #prettify
Constructor Details
This class inherits a constructor from Byebug::Command
Class Method Details
.description ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/byebug/commands/tracevar.rb', line 16 def self.description <<-DESCRIPTION tr[acevar] <variable> [[no]stop] #{short_description} If "stop" is specified, execution will stop every time the variable changes its value. If nothing or "nostop" is specified, execution won't stop, changes will just be logged in byebug's output. DESCRIPTION end |
.regexp ⇒ Object
10 11 12 13 14 |
# File 'lib/byebug/commands/tracevar.rb', line 10 def self.regexp /^\s* tr(?:acevar)? (?: \s+ (\S+))? # (variable-name)? (?: \s+ (stop|nostop))? \s*$/x end |
.short_description ⇒ Object
28 29 30 |
# File 'lib/byebug/commands/tracevar.rb', line 28 def self.short_description "Enables tracing of a global variable" end |
Instance Method Details
#execute ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/byebug/commands/tracevar.rb', line 32 def execute var = @match[1] return errmsg(pr("trace.errors.needs_global_variable")) unless var return errmsg(pr("trace.errors.var_is_not_global", name: var)) unless global_variables.include?(:"#{var}") stop = @match[2] && @match[2] !~ /nostop/ instance_eval do trace_var(:"#{var}") { |val| on_change(var, val, stop) } end puts pr("trace.messages.success", var: var) end |