Sha256: 19d2df954b20bc81b098d4c224d2016f097dbcd4d7ca09b22224ca32b43d2f5b

Contents?: true

Size: 924 Bytes

Versions: 1

Compression:

Stored size: 924 Bytes

Contents

# frozen_string_literal: true

require 'open3'

module TasksScheduler
  class Daemon
    ACTIONS = %w[status start stop restart].freeze

    class << self
      def execute(action)
        raise "Action not allowed: #{action} (Allowed: #{ACTIONS})" unless ACTIONS.include?(action)

        command = ['bundle', 'exec', 'tasks_scheduler', action]
        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

      def running?
        execute('status')[:status].zero?
      end

      def env_args
        { 'RAILS_ENV' => Rails.env, ::TasksScheduler::Checker::LOG_ON_FILE_ENV_KEY => '1' }
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
tasks_scheduler-0.4.0 lib/tasks_scheduler/daemon.rb