Sha256: e9f2a5c9428db3edc427c4b38f382744b1d2b4446b2f47ab0b6d507df9f1769b
Contents?: true
Size: 1.28 KB
Versions: 6
Compression:
Stored size: 1.28 KB
Contents
module ZendeskAPI # @private module Rescue def self.included(klass) klass.extend(Methods) klass.send(:include, Methods) end # @private module Methods def log_error(e, method = false) if logger = (@client ? @client.config.logger : Kernel) logger.warn "#{self} - #{method}" if method logger.warn e.message logger.warn e.backtrace.join("\n") logger.warn "\t#{e.response[:body].inspect}" if e.response end end def rescue_client_error(*args) opts = args.last.is_a?(Hash) ? args.pop : {} if args.any? args.each do |method| class_eval("alias :orig_#{method} :#{method}") define_method method do |*args| begin send("orig_#{method}", *args) rescue Faraday::Error::ClientError => e log_error(e, method) opts[:with].respond_to?(:call) ? opts[:with].call : opts[:with] end end end elsif block_given? begin yield rescue Faraday::Error::ClientError => e log_error(e) opts[:with].respond_to?(:call) ? opts[:with].call : opts[:with] end end end end end end
Version data entries
6 entries across 6 versions & 1 rubygems