Sha256: cff3e697692792db54fad7176942c0258f72e8f558d8546bda906b4c69a23f18

Contents?: true

Size: 1.13 KB

Versions: 26

Compression:

Stored size: 1.13 KB

Contents

module Forklift
  module Base
    class Pid

      def initialize(forklift)
        @forklift = forklift
      end

      def forklift
        @forklift
      end

      def pid_dir
        "#{forklift.config[:project_root]}/pid"
      end

      def ensure_pid_dir
        `mkdir -p #{pid_dir}`
      end

      def pidfile
        "#{pid_dir}/pidfile"
      end

      def store!
        forklift.logger.debug "Creating pidfile @ #{pidfile}"
        ensure_pid_dir
        File.open(pidfile, 'w') {|f| f << Process.pid}
      end

      def recall
        ensure_pid_dir
        IO.read(pidfile).to_i rescue nil
      end

      def delete!
        forklift.logger.debug "Removing pidfile @ #{pidfile}"
        FileUtils.rm(pidfile) rescue nil
      end

      def safe_to_run?
        return if recall.nil?
        count = `ps -p #{recall} | wc -l`.to_i
        if count >= 2
          forklift.logger.fatal "This application is already running (pidfile) #{recall}. Exiting now"
          exit(1)
        else
          forklift.logger.log "Clearing old pidfile from previous process #{recall}"
          delete!
        end
      end

    end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
forklift_etl-1.2.2 lib/forklift/base/pid.rb
forklift_etl-1.2.1 lib/forklift/base/pid.rb
forklift_etl-1.2.0 lib/forklift/base/pid.rb
forklift_etl-1.1.12 lib/forklift/base/pid.rb
forklift_etl-1.1.11 lib/forklift/base/pid.rb
forklift_etl-1.1.10 lib/forklift/base/pid.rb
forklift_etl-1.1.9 lib/forklift/base/pid.rb
forklift_etl-1.1.8 lib/forklift/base/pid.rb
forklift_etl-1.1.7 lib/forklift/base/pid.rb
forklift_etl-1.1.6 lib/forklift/base/pid.rb
forklift_etl-1.1.5 lib/forklift/base/pid.rb
forklift_etl-1.1.4 lib/forklift/base/pid.rb
forklift_etl-1.1.3 lib/forklift/base/pid.rb
forklift_etl-1.1.2 lib/forklift/base/pid.rb
forklift_etl-1.1.0 lib/forklift/base/pid.rb
forklift_etl-1.0.19 lib/forklift/base/pid.rb
forklift_etl-1.0.18 lib/forklift/base/pid.rb
forklift_etl-1.0.17 lib/forklift/base/pid.rb
forklift_etl-1.0.16 lib/forklift/base/pid.rb
forklift_etl-1.0.15 lib/forklift/base/pid.rb