Module: ShellHelpers::SudoLoop
Overview
SudoLoop {{{ extend SudoLoop.configure to run a sudo loop SH.sh("ls /", sudo: "sudo".extend(SH::SudoLoop.configure(**opts))
Instance Method Summary collapse
- #configure(**opts) ⇒ Object
- #run_sudo_loop(command: "sudo -v", interval: 30, init_command: command) ⇒ Object
- #stop_sudo_loop ⇒ Object
Instance Method Details
#configure(**opts) ⇒ Object
66 67 68 69 70 71 72 73 74 75 |
# File 'lib/shell_helpers/sh.rb', line 66 def configure(**opts) return Module.new do |m| m.define_method(:sudo_loop) do SudoLoop.instance_method(:run_sudo_loop).bind(self).call(**opts) end m.define_method(:stop_sudo_loop) do SudoLoop.instance_method(:stop_sudo_loop).bind(self).call end end end |
#run_sudo_loop(command: "sudo -v", interval: 30, init_command: command) ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/shell_helpers/sh.rb', line 77 def run_sudo_loop(command: "sudo -v", interval: 30, init_command: command) if @sudo_loop_thread.nil? or !@sudo_loop_thread.alive? Sh.sh_or_proc(init_command, log: false) #require 'pry'; binding.pry @sudo_loop_thread = Thread.new do loop do Sh.sh_or_proc(command, log: false) sleep(interval) end end @sudo_loop_thread.run end end |
#stop_sudo_loop ⇒ Object
91 92 93 |
# File 'lib/shell_helpers/sh.rb', line 91 def stop_sudo_loop @sudo_loop_thread&.kill end |