pry-moves 1.0.8 → 1.0.9

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
  SHA256:
3
- metadata.gz: d5dd73d9bf5340f7b9660e07be21e5a156fba16cd43005aef95c6a0b6ac18147
4
- data.tar.gz: 6293a071d17ee76aaf7dc9eaee97284331147fa9cd214e965e8c7500b200fed7
3
+ metadata.gz: 9263336bfe7c3be49b7672539f91ca3f0962d541fd5c5038001d5c5cf80b964d
4
+ data.tar.gz: 10e0a8c2d8eec1e34dd84b11134f8d615b02562c7583c86f56c1c4e4fbfad81c
5
5
  SHA512:
6
- metadata.gz: e42e8c1a57e66778e9f81beca8a17e3f5929d5354f6c5c26b29c346ef7d00a9c4830f12eb08af0c62c45ddfff307fcb2909affb400318cabfc827aa6d2685daf
7
- data.tar.gz: 5bbf6d3f960084634dd0f22fa9b2965be9671b9fa39a2ccbd1152c96059a912b3ddff3116ba640081deb922d6b86c8de653a1f69012ba82c3fb8a6150e72b4cc
6
+ metadata.gz: 2d346fba1c2c84c50fabedad6557a5b20ccd449892d8f8e0c5b3f9529fa5ba0f0d1032b6da241aaf24c88c5a64e8b2c1313fa84046dd4b2ee78800208a213104
7
+ data.tar.gz: bd37798926c7a2fd4bf689e4160e9f1958e0db6760addea4534665e5f28509be92cb96f1be5bee6246995d933457f2dcda27f90906f295ba9f7107935f3d745a
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pry-moves (1.0.7)
4
+ pry-moves (1.0.8)
5
5
  awesome_print (>= 1.8.0)
6
6
  binding_of_caller (~> 0.7)
7
7
  colorize (~> 0.8)
data/README.md CHANGED
@@ -38,6 +38,7 @@ Documentation for latest version. For [v0.1.12 see documentation here](https://g
38
38
  * `.method` or `123` or `:hash_key` - Continue traversing of last object in history. E.g. `orders` will list array, then `3` will enter `orders[3]`, then `.price` will enter `orders[3].price`
39
39
  * `watch variable` - display variable's value on each step
40
40
  * `diff expression` - display difference between saved expression (on first run) and expression 2
41
+ * `off` - Turn off debugging (don't stop on breakpoints)
41
42
  * `@` - restart and reload scripts (in app/ & spec/ by default), reload rake tasks. Configurable.
42
43
  * `#` - exit with code 3, can be wrapped in bash script to fully reload ruby scripts
43
44
  * `!` - exit
@@ -98,6 +99,12 @@ PRY_MOVES_DEBUG_MISSING=off
98
99
  PRY_MOVES_RELOADER=off
99
100
  ```
100
101
 
102
+ Debug:
103
+ ```bash
104
+ TRACE_MOVES=on
105
+ ```
106
+
107
+
101
108
  ## Threads, helpers
102
109
 
103
110
  To allow traveling to parent thread, use:
@@ -31,7 +31,7 @@ class CodeReloader
31
31
 
32
32
  def traverse_files
33
33
  paths = PryMoves.reload_ruby_scripts[:monitor]
34
- except = PryMoves.reload_ruby_scripts[:except]
34
+ except = PryMoves.reload_ruby_scripts[:except] + rails_path_exceptions
35
35
  paths.each do |root|
36
36
  files = Dir.glob("#{root}/**/*")
37
37
  files.each do |path|
@@ -43,4 +43,12 @@ class CodeReloader
43
43
  end
44
44
  end
45
45
 
46
- end
46
+ def rails_path_exceptions
47
+ Rails.autoloaders.main.ignore.map do
48
+ _1.to_s.gsub /^#{Rails.root.to_s}\//, ""
49
+ end
50
+ rescue
51
+ []
52
+ end
53
+
54
+ end
@@ -52,6 +52,7 @@ module PryMoves
52
52
  end
53
53
 
54
54
  block_command 'diff', 'Display difference' do
55
+ next if PryMoves::Vars.var_precedence :diff, target
55
56
  cmd = arg_string.gsub(/^diff/, '').strip
56
57
  PryMoves::Diff.new(_pry_, target).run_command cmd
57
58
  end
@@ -65,6 +66,11 @@ module PryMoves
65
66
  breakout_navigation :debug, cmd
66
67
  end
67
68
 
69
+ block_command 'off', '' do
70
+ PryMoves.switch if PryMoves.stop_on_breakpoints?
71
+ run 'continue'
72
+ end
73
+
68
74
  block_command :restart, '' do
69
75
  PryMoves.restart_requested = true
70
76
  run 'continue'
@@ -57,10 +57,12 @@ class PryMoves::Formatter
57
57
  str.length > 50 ? "#{str.first 50}..." : str
58
58
  end
59
59
 
60
- PATH_TRASH = defined?(Rails) ? Rails.root.to_s : Dir.pwd
60
+ def path_trash
61
+ @path_trash ||= defined?(Rails) ? Rails.root.to_s : Dir.pwd
62
+ end
61
63
 
62
64
  def shorten_path(path)
63
- path = path.gsub( /^#{PATH_TRASH}\//, '')
65
+ path = path.gsub( /^#{path_trash}\//, '')
64
66
  PryMoves::Backtrace.trim_path ?
65
67
  File.basename(path, ".*") : path
66
68
  end
@@ -82,4 +84,4 @@ class PryMoves::Formatter
82
84
  end
83
85
  end
84
86
 
85
- end
87
+ end
@@ -29,6 +29,9 @@ module PryMoves::Restartable
29
29
  raise PryMoves::Reload if reload_requested
30
30
  end
31
31
 
32
+ def reload_sources
33
+ PryMoves.reloader&.reload
34
+ end
32
35
 
33
36
  end
34
37
 
@@ -1,3 +1,3 @@
1
1
  module PryMoves
2
- VERSION = '1.0.8'
2
+ VERSION = '1.0.9'
3
3
  end
data/lib/pry-moves.rb CHANGED
@@ -15,7 +15,51 @@ module PryMoves
15
15
  Kernel.loop do
16
16
  result = yield
17
17
  debug "⏸ execution loop complete\n#{result}"
18
- PryMoves.reloader&.reload
18
+ PryMoves.reload_sources
19
+ end
20
+ end
21
+
22
+ def stop_on_breakpoints?
23
+ stop_on_breakpoints
24
+ end
25
+
26
+ def switch
27
+ self.stop_on_breakpoints = !self.stop_on_breakpoints
28
+ if self.stop_on_breakpoints
29
+ puts '🪲 Debugging is turned on'
30
+ else
31
+ puts '🐞 Debugging is turned off'
32
+ end
33
+ end
34
+
35
+ def listen_signal_to_switch use_signals = %w[INFO QUIT]
36
+ # signals list in bash: stty -a
37
+ signal = use_signals.find {Signal.list[_1]}
38
+ unless signal
39
+ puts "No signals supported for PryMoves switch: #{use_signals}"
40
+ return
41
+ end
42
+
43
+ puts "🚥 Overriding #{signal} signal for PryMoves debug switch"
44
+ Signal.trap 'INFO' do
45
+ PryMoves.switch
46
+ end
47
+ end
48
+
49
+ def debug_window_attached?
50
+ if !@last_attachment_check or Time.now - @last_attachment_check > 2
51
+ @is_debug_window_attached = begin
52
+ @last_attachment_check = Time.now
53
+ if `echo $STY` # is in screen
54
+ my_window = `echo $WINDOW`.strip
55
+ windows_list = `screen -Q windows`
56
+ windows_list.include? " #{my_window}*" # process is in currently active window
57
+ else
58
+ true
59
+ end
60
+ end
61
+ else
62
+ @is_debug_window_attached
19
63
  end
20
64
  end
21
65
 
@@ -44,7 +88,7 @@ module PryMoves
44
88
  pry_moves_stack_end = true
45
89
  message ||= data
46
90
  PryMoves.re_execution
47
- if PryMoves.stop_on_breakpoints
91
+ if PryMoves.stop_on_breakpoints?
48
92
  self.debug_called_times += 1
49
93
  return if at and self.debug_called_times != at
50
94
  return if from and self.debug_called_times < from
@@ -60,7 +104,7 @@ module PryMoves
60
104
 
61
105
  def runtime_debug(instance, external: false)
62
106
  do_debug = (
63
- stop_on_breakpoints and
107
+ stop_on_breakpoints? and
64
108
  not open? and
65
109
  (external or is_project_file?) and
66
110
  not [RubyVM::InstructionSequence].include?(instance)
@@ -9,7 +9,7 @@ def error(err = "Error", debug_object = nil)
9
9
  message = "😱 #{err}"
10
10
  debug_object ||= err.metadata if err.respond_to? :metadata
11
11
  unless PryMoves.open? or err.is_a? PryMoves::Restart
12
- if PryMoves.stop_on_breakpoints
12
+ if PryMoves.stop_on_breakpoints?
13
13
  PryMoves.debug_error message.red, debug_object
14
14
  elsif !PryMoves.dont_print_errors
15
15
  STDERR.puts PryMoves.format_debug_object(debug_object) if debug_object
@@ -24,7 +24,7 @@ def shit!(err = 'Oh, shit!', debug_object = nil)
24
24
  return if ENV['NO_SHIT']
25
25
  pry_moves_stack_end = true
26
26
  message = "💩 #{err.is_a?(String) ? err : err.message}"
27
- raise err unless PryMoves.stop_on_breakpoints
27
+ raise err unless PryMoves.stop_on_breakpoints?
28
28
  lines = [message.red]
29
29
  lines.prepend debug_object.ai if debug_object
30
30
  PryMoves.debug_error lines.join("\n")
@@ -33,9 +33,9 @@ end
33
33
 
34
34
  Object.class_eval do
35
35
 
36
- def required!
36
+ def required! param = nil
37
37
  pry_moves_stack_end = true
38
- error("required parameter is missing", self) if self.nil?
38
+ error("required parameter is missing", param) if self.nil?
39
39
  self
40
40
  end
41
41
 
data/pry-moves.gemspec CHANGED
@@ -20,6 +20,7 @@ Gem::Specification.new do |gem|
20
20
  # Dependencies
21
21
  gem.required_ruby_version = '>= 1.8.7', '< 3'
22
22
  gem.add_runtime_dependency 'pry', '>= 0.10.4', '< 0.13'
23
+ gem.add_runtime_dependency 'pry-coolline', '~> 0.2.5'
23
24
  gem.add_runtime_dependency 'binding_of_caller', '~> 0.7'
24
25
  gem.add_runtime_dependency 'colorize', '~> 0.8'
25
26
  gem.add_runtime_dependency 'awesome_print', '>= 1.8.0'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pry-moves
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.8
4
+ version: 1.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - garmoshka-mo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-20 00:00:00.000000000 Z
11
+ date: 2023-11-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry
@@ -30,6 +30,20 @@ dependencies:
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '0.13'
33
+ - !ruby/object:Gem::Dependency
34
+ name: pry-coolline
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: 0.2.5
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: 0.2.5
33
47
  - !ruby/object:Gem::Dependency
34
48
  name: binding_of_caller
35
49
  requirement: !ruby/object:Gem::Requirement