byebug 8.2.2 → 8.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a36b03a8384040e6115f7a70701fd07388cc51ab
4
- data.tar.gz: 842e4928011aeb9832768de39fa49067d8dc3fa6
3
+ metadata.gz: 3de52e0debad720f122829e148b9b492a2acba4d
4
+ data.tar.gz: ded3f66ec7d142c98f96448e140bf4084cd26c74
5
5
  SHA512:
6
- metadata.gz: 15d4d993bcac41bcc06c949fa746ce4198bbaaeae1a893a5caa3f43ee2374a26f3d62b76c9eb46edd5df00709f506e18d4c614a11a98b086bc031cbb9a29f658
7
- data.tar.gz: c9a7668f5ebabc9db76f10e7851420303333d17c10e7a77949fa665cc697ac4c2973fe6702d7b6979119758eb4e8682f4dc9893787b0568150bc8dd2e624e946
6
+ metadata.gz: c8b995f94420f0a6ea19f7adcabd403ab987e2fe0bb5b416eeae799c795faf59d4d93fea0b9e04016690d103e17f27ab4e6f4fc1e2c8b07d6b94448c00f213ef
7
+ data.tar.gz: 7c3f70142d4f637bc2d40a4564d5b894d0bcee68f96eb655f1c63cce015f5dd10af6fed4bb1fcb10fdbe235f1648292720c6843ee4aaf256efa427c7e007b5cf
@@ -2,7 +2,17 @@
2
2
 
3
3
  ## Master (Unreleased)
4
4
 
5
- ## 8.2.2 - 2015-02-01
5
+ ## 8.2.3 - 2016-04-07
6
+
7
+ ### Fixed
8
+
9
+ * Better interaction with utilities like RSpec when hitting Ctrl-C.
10
+ * `irb` command when original program modified ARGV (#197, thanks @josephks).
11
+ * Unusable debugger when stdin redirected (#211,thanks @sethk).
12
+ * RC file loading when no explicit flag included (#223).
13
+ * Installation on some Windows systems (#175, #226).
14
+
15
+ ## 8.2.2 - 2016-02-01
6
16
 
7
17
  ### Fixed
8
18
 
data/GUIDE.md CHANGED
@@ -84,7 +84,7 @@ Now let us step through the program.
84
84
  8:
85
85
  9: tri
86
86
  10: end
87
- (byebug) p tri
87
+ (byebug) eval tri
88
88
  nil
89
89
  (byebug) step
90
90
 
@@ -99,7 +99,7 @@ nil
99
99
  9: tri
100
100
  10: end
101
101
  11:
102
- (byebug) p tri
102
+ (byebug) eval tri
103
103
  0
104
104
  ```
105
105
 
@@ -107,7 +107,7 @@ The first `step` command runs the script one executable unit. The second command
107
107
  we entered was just hitting the return key: `byebug` remembers the last command
108
108
  you entered was `step` and runs it again.
109
109
 
110
- One way to print the values of variables is `p` (there are other ways). When we
110
+ One way to print the values of variables is `eval` (there are other ways). When we
111
111
  look at the value of `tri` the first time, we see it is `nil`. Again we are
112
112
  stopped _before_ the assignment on line 5, and this variable hadn't been set
113
113
  previously. However after issuing another `step` command we see that the value
@@ -447,7 +447,7 @@ NameError Exception: undefined local variable or method `n_args' for main:Object
447
447
  => 28: hanoi(n, :a, :b, :c)
448
448
  (byebug) n_args
449
449
  0
450
- (byebug) p n
450
+ (byebug) eval n
451
451
  3
452
452
  (byebug) down 2
453
453
 
@@ -462,12 +462,12 @@ NameError Exception: undefined local variable or method `n_args' for main:Object
462
462
  8:
463
463
  9: hanoi(n - 1, c, b, a) if n - 1 > 0
464
464
  10: end
465
- (byebug) p n
465
+ (byebug) eval n
466
466
  2
467
467
  ```
468
468
 
469
469
  Notice in the above to get the value of variable `n` we had to use a print
470
- command like `p n`. If we entered just `n`, that would be taken to mean byebug
470
+ command like `eval n`. If we entered just `n`, that would be taken to mean byebug
471
471
  command `next`. In the current scope, variable `n_args` is not defined. However
472
472
  I can change to the top-most frame by using the `frame 2` command. Notice that
473
473
  inside frame #2, the value of `n_args` can be shown. Also note that the value of
data/README.md CHANGED
@@ -9,13 +9,13 @@
9
9
  [gem]: https://img.shields.io/gem/v/byebug.svg
10
10
  [gpa]: https://img.shields.io/codeclimate/github/deivid-rodriguez/byebug.svg
11
11
  [cov]: https://img.shields.io/codeclimate/coverage/github/deivid-rodriguez/byebug.svg
12
- [tip]: https://img.shields.io/gittip/deivid-rodriguez.svg
12
+ [tip]: https://img.shields.io/gittip/byebug.svg
13
13
  [irc]: https://img.shields.io/badge/IRC%20(gitter)-devs%20%26%20users-brightgreen.svg
14
14
 
15
15
  [gem_url]: https://rubygems.org/gems/byebug
16
16
  [gpa_url]: https://codeclimate.com/github/deivid-rodriguez/byebug
17
17
  [cov_url]: https://codeclimate.com/github/deivid-rodriguez/byebug
18
- [tip_url]: https://gratipay.com/~deivid-rodriguez
18
+ [tip_url]: https://gratipay.com/byebug
19
19
  [irc_url]: https://gitter.im/deivid-rodriguez/byebug
20
20
 
21
21
  Byebug is a simple to use, feature rich debugger for Ruby 2. It uses the new
@@ -67,9 +67,22 @@ Simply drop
67
67
 
68
68
  byebug
69
69
 
70
- wherever you want to start debugging and the execution will stop there. If you
71
- are debugging rails, start the server and once the execution gets to your
72
- `byebug` command you will get a debugging prompt.
70
+ wherever you want to start debugging and the execution will stop there.
71
+ If you were debugging Rails, for example, you would add `byebug` to your code.
72
+
73
+ ```ruby
74
+ def index
75
+ byebug
76
+ @articles = Article.find_recent
77
+ ```
78
+
79
+ And then start a Rails server.
80
+
81
+ ```shell
82
+ bin/rails s
83
+ ```
84
+
85
+ Once the execution gets to your `byebug` command you will get a debugging prompt.
73
86
 
74
87
  ## Byebug's commands
75
88
 
data/bin/byebug CHANGED
@@ -1,5 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ $LOAD_PATH.unshift(File.dirname(File.realpath(__FILE__)) + '/../lib')
4
+
3
5
  require 'byebug/runner'
4
6
 
5
7
  Byebug::Runner.new.run
@@ -1,4 +1,4 @@
1
- #include <byebug.h>
1
+ #include "byebug.h"
2
2
 
3
3
  #ifdef _WIN32
4
4
  #include <ctype.h>
@@ -1,4 +1,4 @@
1
- #include <byebug.h>
1
+ #include "byebug.h"
2
2
 
3
3
  static VALUE mByebug; /* Ruby Byebug Module object */
4
4
 
@@ -8,13 +8,13 @@
8
8
  #define UNUSED(x) (void)(x)
9
9
 
10
10
  /* flags */
11
- #define CTX_FL_DEAD (1<<1) /* this context belonged to a dead thread */
12
- #define CTX_FL_IGNORE (1<<2) /* this context belongs to ignored thread */
13
- #define CTX_FL_SUSPEND (1<<3) /* thread currently suspended */
14
- #define CTX_FL_TRACING (1<<4) /* call at_tracing method */
15
- #define CTX_FL_WAS_RUNNING (1<<5) /* thread was previously running */
16
- #define CTX_FL_STOP_ON_RET (1<<6) /* can stop on method 'end' */
17
- #define CTX_FL_IGNORE_STEPS (1<<7) /* doesn't countdown steps to break */
11
+ #define CTX_FL_DEAD (1<<1) /* this context belonged to a dead thread */
12
+ #define CTX_FL_IGNORE (1<<2) /* this context belongs to ignored thread */
13
+ #define CTX_FL_SUSPEND (1<<3) /* thread currently suspended */
14
+ #define CTX_FL_TRACING (1<<4) /* call at_tracing method */
15
+ #define CTX_FL_WAS_RUNNING (1<<5) /* thread was previously running */
16
+ #define CTX_FL_STOP_ON_RET (1<<6) /* can stop on method 'end' */
17
+ #define CTX_FL_IGNORE_STEPS (1<<7) /* doesn't countdown steps to break */
18
18
 
19
19
  /* macro functions */
20
20
  #define CTX_FL_TEST(c,f) ((c)->flags & (f))
@@ -22,14 +22,16 @@
22
22
  #define CTX_FL_UNSET(c,f) do { (c)->flags &= ~(f); } while (0)
23
23
 
24
24
  /* types */
25
- typedef enum {
25
+ typedef enum
26
+ {
26
27
  CTX_STOP_NONE,
27
28
  CTX_STOP_STEP,
28
29
  CTX_STOP_BREAKPOINT,
29
30
  CTX_STOP_CATCHPOINT
30
31
  } ctx_stop_reason;
31
32
 
32
- typedef struct {
33
+ typedef struct
34
+ {
33
35
  int calced_stack_size;
34
36
  int flags;
35
37
  ctx_stop_reason stop_reason;
@@ -37,22 +39,24 @@ typedef struct {
37
39
  VALUE thread;
38
40
  int thnum;
39
41
 
40
- int dest_frame; /* next stop's frame if stopped by next */
41
- int lines; /* # of lines in dest_frame before stopping */
42
- int steps; /* # of steps before stopping */
43
- int steps_out; /* # of returns before stopping */
42
+ int dest_frame; /* next stop's frame if stopped by next */
43
+ int lines; /* # of lines in dest_frame before stopping */
44
+ int steps; /* # of steps before stopping */
45
+ int steps_out; /* # of returns before stopping */
44
46
 
45
- VALUE backtrace; /* [[loc, self, klass, binding], ...] */
47
+ VALUE backtrace; /* [[loc, self, klass, binding], ...] */
46
48
  } debug_context_t;
47
49
 
48
- typedef enum {
50
+ typedef enum
51
+ {
49
52
  LOCATION,
50
53
  SELF,
51
54
  CLASS,
52
55
  BINDING
53
56
  } frame_part;
54
57
 
55
- struct call_with_inspection_data {
58
+ struct call_with_inspection_data
59
+ {
56
60
  debug_context_t *dc;
57
61
  VALUE ctx;
58
62
  ID id;
@@ -60,15 +64,19 @@ struct call_with_inspection_data {
60
64
  VALUE *argv;
61
65
  };
62
66
 
63
- typedef struct {
67
+ typedef struct
68
+ {
64
69
  st_table *tbl;
65
70
  } threads_table_t;
66
71
 
67
- enum bp_type { BP_POS_TYPE, BP_METHOD_TYPE };
72
+ enum bp_type
73
+ { BP_POS_TYPE, BP_METHOD_TYPE };
68
74
 
69
- enum hit_condition { HIT_COND_NONE, HIT_COND_GE, HIT_COND_EQ, HIT_COND_MOD };
75
+ enum hit_condition
76
+ { HIT_COND_NONE, HIT_COND_GE, HIT_COND_EQ, HIT_COND_MOD };
70
77
 
71
- typedef struct {
78
+ typedef struct
79
+ {
72
80
  int id;
73
81
  enum bp_type type;
74
82
  VALUE source;
@@ -93,9 +101,9 @@ extern void remove_from_locked(VALUE thread);
93
101
  /* functions from threads.c */
94
102
  extern void Init_threads_table(VALUE mByebug);
95
103
  extern VALUE create_threads_table(void);
96
- extern void thread_context_lookup(VALUE thread, VALUE *context);
104
+ extern void thread_context_lookup(VALUE thread, VALUE * context);
97
105
  extern int is_living_thread(VALUE thread);
98
- extern void acquire_lock(debug_context_t *dc);
106
+ extern void acquire_lock(debug_context_t * dc);
99
107
  extern void release_lock(void);
100
108
 
101
109
  /* global variables */
@@ -105,27 +113,21 @@ extern VALUE next_thread;
105
113
  /* functions from context.c */
106
114
  extern void Init_context(VALUE mByebug);
107
115
  extern VALUE context_create(VALUE thread);
108
- extern VALUE context_dup(debug_context_t *context);
109
- extern void reset_stepping_stop_points(debug_context_t *context);
116
+ extern VALUE context_dup(debug_context_t * context);
117
+ extern void reset_stepping_stop_points(debug_context_t * context);
110
118
  extern VALUE call_with_debug_inspector(struct call_with_inspection_data *data);
111
- extern VALUE context_backtrace_set(const rb_debug_inspector_t *inspector,
119
+ extern VALUE context_backtrace_set(const rb_debug_inspector_t * inspector,
112
120
  void *data);
113
121
 
114
122
  /* functions from breakpoint.c */
115
123
  extern void Init_breakpoint(VALUE mByebug);
116
- extern VALUE catchpoint_hit_count(VALUE catchpoints,
117
- VALUE exception,
118
- VALUE *exception_name);
124
+ extern VALUE catchpoint_hit_count(VALUE catchpoints, VALUE exception,
125
+ VALUE * exception_name);
119
126
 
120
- extern VALUE find_breakpoint_by_pos(VALUE breakpoints,
121
- VALUE source,
122
- VALUE pos,
127
+ extern VALUE find_breakpoint_by_pos(VALUE breakpoints, VALUE source, VALUE pos,
123
128
  VALUE bind);
124
129
 
125
- extern VALUE find_breakpoint_by_method(VALUE breakpoints,
126
- VALUE klass,
127
- VALUE mid,
128
- VALUE bind,
129
- VALUE self);
130
+ extern VALUE find_breakpoint_by_method(VALUE breakpoints, VALUE klass,
131
+ VALUE mid, VALUE bind, VALUE self);
130
132
 
131
133
  #endif
@@ -1,4 +1,4 @@
1
- #include <byebug.h>
1
+ #include "byebug.h"
2
2
 
3
3
  static VALUE cContext;
4
4
  static VALUE cDebugThread;
@@ -1,21 +1,10 @@
1
- if RUBY_VERSION < '2.0'
2
- STDERR.print("Ruby version is too old\n")
3
- exit(1)
4
- end
5
-
6
1
  require 'mkmf'
7
2
 
8
3
  makefile_config = RbConfig::MAKEFILE_CONFIG
9
4
 
10
5
  makefile_config['CC'] = ENV['CC'] if ENV['CC']
11
6
 
12
- makefile_config['CFLAGS'] << ' -Wall -Werror'
13
7
  makefile_config['CFLAGS'] << ' -gdwarf-2 -g3 -O0' if ENV['debug']
14
8
 
15
- if makefile_config['CC'] =~ /clang/
16
- makefile_config['CFLAGS'] << ' -Wno-unknown-warning-option'
17
- makefile_config['CFLAGS'] << ' -Wno-ignored-attributes'
18
- end
19
-
20
9
  dir_config('ruby')
21
10
  with_cflags(makefile_config['CFLAGS']) { create_makefile('byebug/byebug') }
@@ -1,4 +1,4 @@
1
- #include <byebug.h>
1
+ #include "byebug.h"
2
2
 
3
3
  /**
4
4
  * A simple linked list containing locked threads, FIFO style.
@@ -1,4 +1,4 @@
1
- #include <byebug.h>
1
+ #include "byebug.h"
2
2
 
3
3
  /* Threads table class */
4
4
  static VALUE cThreadsTable;
@@ -80,16 +80,16 @@ module Byebug
80
80
  end
81
81
 
82
82
  def add_line_breakpoint(file, line)
83
- fail(pr('break.errors.source', file: file)) unless File.exist?(file)
83
+ raise(pr('break.errors.source', file: file)) unless File.exist?(file)
84
84
 
85
85
  fullpath = File.realpath(file)
86
86
 
87
87
  if line > n_lines(file)
88
- fail(pr('break.errors.far_line', lines: n_lines(file), file: fullpath))
88
+ raise(pr('break.errors.far_line', lines: n_lines(file), file: fullpath))
89
89
  end
90
90
 
91
91
  unless Breakpoint.potential_line?(fullpath, line)
92
- fail(pr('break.errors.line', file: fullpath, line: line))
92
+ raise(pr('break.errors.line', file: fullpath, line: line))
93
93
  end
94
94
 
95
95
  Breakpoint.add(fullpath, line, @match[2])
@@ -44,7 +44,7 @@ module Byebug
44
44
  end
45
45
 
46
46
  def help_for(input, cmd)
47
- fail CommandNotFound.new(input, command) unless cmd
47
+ raise CommandNotFound.new(input, command) unless cmd
48
48
 
49
49
  puts(cmd.help)
50
50
  end
@@ -29,7 +29,20 @@ module Byebug
29
29
  return errmsg(pr('base.errors.only_local'))
30
30
  end
31
31
 
32
- IRB.start(__FILE__)
32
+ # IRB tries to parse ARGV so we must clear it. See issue 197
33
+ with_clean_argv { IRB.start(__FILE__) }
34
+ end
35
+
36
+ private
37
+
38
+ def with_clean_argv
39
+ saved_argv = ARGV.dup
40
+ ARGV.clear
41
+ begin
42
+ yield
43
+ ensure
44
+ ARGV.concat(saved_argv)
45
+ end
33
46
  end
34
47
  end
35
48
  end
@@ -36,11 +36,11 @@ module Byebug
36
36
 
37
37
  def execute
38
38
  msg = "No sourcefile available for #{frame.file}"
39
- fail(msg) unless File.exist?(frame.file)
39
+ raise(msg) unless File.exist?(frame.file)
40
40
 
41
41
  max_lines = n_lines(frame.file)
42
42
  b, e = range(@match[2], max_lines)
43
- fail('Invalid line range') unless valid_range?(b, e, max_lines)
43
+ raise('Invalid line range') unless valid_range?(b, e, max_lines)
44
44
 
45
45
  display_lines(b, e)
46
46
 
@@ -85,11 +85,11 @@ module Byebug
85
85
 
86
86
  def parse_range(input, size, max_line)
87
87
  first, err = get_int(lower_bound(input), 'List', 1, max_line)
88
- fail(err) unless first
88
+ raise(err) unless first
89
89
 
90
90
  if upper_bound(input)
91
91
  last, err = get_int(upper_bound(input), 'List', 1, max_line)
92
- fail(err) unless last
92
+ raise(err) unless last
93
93
 
94
94
  last = amend(last, max_line)
95
95
  else
@@ -42,7 +42,7 @@ module Byebug
42
42
  # handling the errors at an error level.
43
43
  #
44
44
  def error_eval(str, binding = frame._binding)
45
- safe_eval(str, binding) { |e| fail(e, msg(e)) }
45
+ safe_eval(str, binding) { |e| raise(e, msg(e)) }
46
46
  end
47
47
 
48
48
  #
@@ -113,7 +113,7 @@ module Byebug
113
113
  #
114
114
  def ignore?(buf)
115
115
  return true if /^\s*$/ =~ buf
116
- return false if Readline::HISTORY.length == 0
116
+ return false if Readline::HISTORY.empty?
117
117
 
118
118
  Readline::HISTORY[Readline::HISTORY.length - 1] == buf
119
119
  end
@@ -1,3 +1,4 @@
1
+ require 'byebug/setting'
1
2
  require 'byebug/history'
2
3
  require 'byebug/helpers/file'
3
4
 
@@ -1,4 +1,6 @@
1
1
  # frozen_string_literal: true
2
+ require 'io/console'
3
+
2
4
  module Byebug
3
5
  #
4
6
  # Interface class for standard byebug use.
@@ -8,23 +10,38 @@ module Byebug
8
10
 
9
11
  def initialize
10
12
  super()
11
- @input = STDIN
12
- @output = STDOUT
13
- @error = STDERR
13
+ @input = @output = @error = IO.console
14
+ Readline.input = @input
15
+ Readline.output = @output
14
16
  end
15
17
 
16
18
  #
17
- # Reads a single line of input using Readline. If Ctrl-C is pressed in the
18
- # middle of input, the line is reset to only the prompt and we ask for input
19
- # again. If Ctrl-D is pressed, it returns "continue".
19
+ # Reads a single line of input using Readline. If Ctrl-D is pressed, it
20
+ # returns "continue", meaning that program's execution will go on.
20
21
  #
21
22
  # @param prompt Prompt to be displayed.
22
23
  #
23
24
  def readline(prompt)
24
- Readline.readline(prompt, false) || EOF_ALIAS
25
+ with_repl_like_sigint do
26
+ Readline.readline(prompt, false) || EOF_ALIAS
27
+ end
28
+ end
29
+
30
+ #
31
+ # Yields the block handling Ctrl-C the following way: if pressed while
32
+ # waiting for input, the line is reset to only the prompt and we ask for
33
+ # input again.
34
+ #
35
+ # @note Any external 'INT' traps are overriden during this method.
36
+ #
37
+ def with_repl_like_sigint
38
+ orig_handler = trap('INT') { raise Interrupt }
39
+ yield
25
40
  rescue Interrupt
26
41
  puts('^C')
27
42
  retry
43
+ ensure
44
+ trap('INT', orig_handler)
28
45
  end
29
46
  end
30
47
  end
@@ -30,7 +30,7 @@ module Byebug
30
30
  output.puts(prompt)
31
31
 
32
32
  result = input.gets
33
- fail IOError unless result
33
+ raise IOError unless result
34
34
 
35
35
  result.chomp
36
36
  end
@@ -50,7 +50,7 @@ module Byebug
50
50
 
51
51
  def rc
52
52
  @opts.on '-x', '--[no-]rc', 'Run byebug initialization file' do |v|
53
- Byebug.run_init_script if v
53
+ @runner.init_script = v
54
54
  end
55
55
  end
56
56
 
@@ -26,7 +26,7 @@ module Byebug
26
26
  end
27
27
  break if result
28
28
  end
29
- fail MissedPath, "Can't find part path '#{path}'" unless result
29
+ raise MissedPath, "Can't find part path '#{path}'" unless result
30
30
  result
31
31
  end
32
32
 
@@ -35,7 +35,7 @@ module Byebug
35
35
  string.gsub(/\|\w+$/, '').gsub(/([^#]?){([^}]*)}/) do
36
36
  key = Regexp.last_match[2].to_s
37
37
  unless args.key?(key.to_sym)
38
- fail MissedArgument, "Missed argument #{key} for '#{string}'"
38
+ raise MissedArgument, "Missed argument #{key} for '#{string}'"
39
39
  end
40
40
 
41
41
  "#{Regexp.last_match[1]}#{args[key.to_sym]}"
@@ -43,6 +43,11 @@ module Byebug
43
43
  #
44
44
  attr_accessor :stop
45
45
 
46
+ #
47
+ # Signals that we should run rc scripts before program starts
48
+ #
49
+ attr_writer :init_script
50
+
46
51
  #
47
52
  # @param stop [Boolean] Whether the runner should stop right before
48
53
  # starting the program.
@@ -71,6 +76,10 @@ module Byebug
71
76
  @remote ||= Byebug.parse_host_and_port(host_and_port)
72
77
  end
73
78
 
79
+ def init_script
80
+ defined?(@init_script) ? @init_script : true
81
+ end
82
+
74
83
  #
75
84
  # Usage banner.
76
85
  #
@@ -96,6 +105,8 @@ module Byebug
96
105
  return
97
106
  end
98
107
 
108
+ Byebug.run_init_script if init_script
109
+
99
110
  setup_cmd_line_args
100
111
 
101
112
  loop do
@@ -130,11 +141,11 @@ module Byebug
130
141
  def setup_cmd_line_args
131
142
  Byebug.mode = :standalone
132
143
 
133
- fail(NoScript, 'You must specify a program to debug...') if $ARGV.empty?
144
+ raise(NoScript, 'You must specify a program to debug...') if $ARGV.empty?
134
145
 
135
146
  program = which($ARGV.shift)
136
147
  program = which($ARGV.shift) if program == which('ruby')
137
- fail(NonExistentScript, "The script doesn't exist") unless program
148
+ raise(NonExistentScript, "The script doesn't exist") unless program
138
149
 
139
150
  $PROGRAM_NAME = program
140
151
  end
@@ -144,7 +155,7 @@ module Byebug
144
155
  #
145
156
  def debug_program
146
157
  ok = syntax_valid?(File.read($PROGRAM_NAME))
147
- fail(InvalidScript, 'The script has incorrect syntax') unless ok
158
+ raise(InvalidScript, 'The script has incorrect syntax') unless ok
148
159
 
149
160
  error = Byebug.debug_load($PROGRAM_NAME, stop)
150
161
  puts "#{error}\n#{error.backtrace}" if error
@@ -23,7 +23,7 @@ module Byebug
23
23
  return puts(help) unless subcmd_name
24
24
 
25
25
  subcmd = subcommand_list.match(subcmd_name)
26
- fail CommandNotFound.new(subcmd_name, self.class) unless subcmd
26
+ raise CommandNotFound.new(subcmd_name, self.class) unless subcmd
27
27
 
28
28
  subcmd.new(processor, arguments).execute
29
29
  end
@@ -3,5 +3,5 @@
3
3
  # Reopen main module to define the library version
4
4
  #
5
5
  module Byebug
6
- VERSION = '8.2.2'.freeze
6
+ VERSION = '8.2.3'.freeze
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: byebug
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.2.2
4
+ version: 8.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Rodriguez
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-02-01 00:00:00.000000000 Z
13
+ date: 2016-04-07 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -189,7 +189,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
189
189
  version: '0'
190
190
  requirements: []
191
191
  rubyforge_project:
192
- rubygems_version: 2.5.1
192
+ rubygems_version: 2.6.0
193
193
  signing_key:
194
194
  specification_version: 4
195
195
  summary: Ruby 2.0 fast debugger - base + CLI