Class: TasksScheduler::Daemon
- Inherits:
-
Object
- Object
- TasksScheduler::Daemon
- Defined in:
- lib/tasks_scheduler/daemon.rb
Constant Summary collapse
- ACTIONS =
%w(status start stop restart).freeze
Class Method Summary collapse
Class Method Details
.execute(action) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/tasks_scheduler/daemon.rb', line 17 def execute(action) raise "Action not allowed: #{action} (Allowed: #{ACTIONS})" unless ACTIONS.include?(action) command = ['bundle', 'exec', 'tasks_scheduler', action] env_args = { 'RAILS_ENV' => Rails.env } Dir.chdir(Rails.root) do Open3.popen3(env_args, *command) do |_stdin, stdout, stderr, wait_thr| { action: action, env_args: env_args.map { |k, v| "#{k}=#{v}" }.join(' | '), command: command.join(' '), status: wait_thr.value.to_i, stdout: stdout.read, stderr: stderr.read } end end end |
.run(rails_root) ⇒ Object
8 9 10 11 12 13 14 15 |
# File 'lib/tasks_scheduler/daemon.rb', line 8 def run(rails_root) dir = File.('tmp/pids', rails_root) FileUtils.mkdir_p(dir) Daemons.run_proc 'tasks_scheduler', dir_mode: :normal, dir: dir do require File.join(rails_root, 'config', 'environment') ::TasksScheduler::Checker.instance.run end end |
.running? ⇒ Boolean
30 31 32 |
# File 'lib/tasks_scheduler/daemon.rb', line 30 def running? execute('status')[:status].zero? end |