Sha256: 80a3e16604d6a2d8f25a51a87b2df9862aeee6213fdde3b69e5ed9b106b9823f

Contents?: true

Size: 1.29 KB

Versions: 1

Compression:

Stored size: 1.29 KB

Contents

# frozen_string_literal: true
module Caddy
  class TaskObserver #:nodoc:
    def initialize(error_handler, cache_name)
      @error_handler = error_handler || Caddy.error_handler
      @cache_name = cache_name
    end

    def update(_, _, boom)
      return unless boom

      if @error_handler
        if @error_handler.respond_to?(:call)
          begin
            @error_handler.call(boom)
          rescue => incepted_boom
            puts_exception("Caddy error handler itself errored handling refresh for :#{@cache_name}", incepted_boom)
          end
        else
          # rubocop:disable Style/StringLiterals
          STDERR.puts 'Caddy error handler not callable. Please set the error handler like:'\
                      ' `Caddy.error_handler = -> (e) { puts "#{e}" }`'
          # rubocop:enable Style/StringLiterals

          puts_exception("Caddy refresher for :#{@cache_name} failed with error", boom)
        end
      elsif boom.is_a?(Concurrent::TimeoutError)
        STDERR.puts "Caddy refresher for :#{@cache_name} timed out"
      else
        puts_exception("Caddy refresher for :#{@cache_name} failed with error", boom)
      end
    end

    private

    def puts_exception(msg, boom)
      STDERR.puts "\n#{msg}: #{boom}"
      STDERR.puts "\t#{boom.backtrace.join("\n\t")}"
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
caddy-1.5.5 lib/caddy/task_observer.rb