Sha256: 7dddc283e50f866605c7a4484cbd636b81ff8fadaeae743189c8f796adbe221c

Contents?: true

Size: 1.22 KB

Versions: 5

Compression:

Stored size: 1.22 KB

Contents

require 'concurrent'
require 'sucker_punch/core_ext'
require 'sucker_punch/counter'
require 'sucker_punch/job'
require 'sucker_punch/queue'
require 'sucker_punch/version'
require 'logger'

module SuckerPunch
  RUNNING = Concurrent::AtomicBoolean.new(true)

  class << self
    def exception_handler=(handler)
      @exception_handler = handler
    end

    def exception_handler
      @exception_handler || method(:default_exception_handler)
    end

    def default_exception_handler(ex, klass, args)
      msg = "Sucker Punch job error for class: '#{klass}' args: #{args}\n"
      msg += "#{ex.class} #{ex}\n"
      msg += "#{ex.backtrace.nil? ? '' : ex.backtrace.join("\n")}"
      logger.error msg
    end

    def logger
      @logger || default_logger
    end

    def logger=(log)
      @logger = (log ? log : Logger.new('/dev/null'))
    end

    def default_logger
      l = Logger.new(STDOUT)
      l.level = Logger::INFO
      l
    end

    def shutdown_timeout
      # 10 seconds on heroku, minus a grace period
      @shutdown_timeout || 8
    end

    def shutdown_timeout=(timeout)
      @shutdown_timeout = timeout
    end
  end
end

at_exit do
  SuckerPunch::Queue.shutdown_all
end

require 'sucker_punch/railtie' if defined?(::Rails)

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
sucker_punch-2.0.3 lib/sucker_punch.rb
sucker_punch-2.0.2 lib/sucker_punch.rb
sucker_punch-2.0.1 lib/sucker_punch.rb
sucker_punch-2.0.0 lib/sucker_punch.rb
sucker_punch-2.0.0.beta2 lib/sucker_punch.rb