Sha256: 25e305424773aa5e407ca41ff364f4abe467c3c2f107729cabc50ffefbaa9576

Contents?: true

Size: 1.51 KB

Versions: 1

Compression:

Stored size: 1.51 KB

Contents

module GitlabJanitor

  class Fmt < ActiveSupport::Logger::SimpleFormatter       
    def call(severity, timestamp, progname, msg)
      super
    end
  end

  class Util

    TERM_SIGNALS = %w[INT TERM].freeze

    class << self

      def exiting?
        $exiting
      end

      def exit!
        $exiting = true
      end

      def logger
        $logger
      end

      def setup
        STDOUT.sync = true
        STDERR.sync = true

        $logger = ActiveSupport::TaggedLogging.new(Logger.new(STDOUT))
        $logger.level = ENV.fetch('LOG_LEVEL', Logger::INFO)
        formatter = Logger::Formatter.new
        formatter.extend ActiveSupport::TaggedLogging::Formatter
        $logger.formatter = formatter

         

        initialize_signal_handlers

        String.class_eval do
          def to_bool
            return true   if self == true   || self =~ (/(true|t|yes|y|1)$/i)
            return false  if self == false  || self.blank? || self =~ (/(false|f|no|n|0)$/i)
            raise ArgumentError.new("invalid value for Boolean: \"#{self}\"")
          end
        end
      end

      def initialize_signal_handlers
        TERM_SIGNALS.each do |sig|
          trap(sig) do |*_args|
            TERM_SIGNALS.each do |sig|
              trap(sig) do |*_args|
                STDERR.puts 'Forcing exit!'
                Kernel::exit!(1)
              end
            end

            STDOUT.puts "Caught signal[#{sig}]: exiting...."
            GitlabJanitor::Util.exit!
          end
        end
      end

    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gitlab-janitor-0.0.3 lib/gitlab-janitor/utils.rb