Module: PryMoves::Restartable

Included in:
PryMoves
Defined in:
lib/pry-moves/restartable.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#reload_rake_tasksObject

Returns the value of attribute reload_rake_tasks.



3
4
5
# File 'lib/pry-moves/restartable.rb', line 3

def reload_rake_tasks
  @reload_rake_tasks
end

#reload_requestedObject

Returns the value of attribute reload_requested.



3
4
5
# File 'lib/pry-moves/restartable.rb', line 3

def reload_requested
  @reload_requested
end

#reload_ruby_scriptsObject

Returns the value of attribute reload_ruby_scripts.



3
4
5
# File 'lib/pry-moves/restartable.rb', line 3

def reload_ruby_scripts
  @reload_ruby_scripts
end

#reloaderObject

Returns the value of attribute reloader.



3
4
5
# File 'lib/pry-moves/restartable.rb', line 3

def reloader
  @reloader
end

#restart_requestedObject

Returns the value of attribute restart_requested.



3
4
5
# File 'lib/pry-moves/restartable.rb', line 3

def restart_requested
  @restart_requested
end

Instance Method Details

#re_executionObject

Raises:



24
25
26
27
28
29
30
# File 'lib/pry-moves/restartable.rb', line 24

def re_execution
  if restart_requested
    self.restart_requested = false
    raise PryMoves::Restart
  end
  raise PryMoves::Reload if reload_requested
end

#reload_sourcesObject



32
33
34
# File 'lib/pry-moves/restartable.rb', line 32

def reload_sources
  PryMoves.reloader&.reload
end

#restartable(context) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/pry-moves/restartable.rb', line 7

def restartable context
  trigger :each_new_run, context
  context[:retry] ||= 0
  PryMoves.reloader&.reload if context[:retry] > 0
  yield context
  re_execution # todo: maybe mark restart_request for thread? not globally?
rescue PryMoves::Restart
  puts "🔄️  Restarting execution"
  PryMoves.reset
  trigger :restart, context
  context[:retry] += 1
  retry
rescue PryMoves::Reload
  puts "🔮  try to use @ with reload"
  exit 3
end