Sha256: d0af259a8e1f0c84074a634154ad8054b933f64186de0937a61c47a3cb4b02ff
Contents?: true
Size: 867 Bytes
Versions: 16
Compression:
Stored size: 867 Bytes
Contents
module TestTrack::Analytics class SafeWrapper attr_reader :underlying def initialize(underlying) @underlying = underlying end def error_handler=(handler) raise ArgumentError, "error_handler must be a lambda" unless handler.lambda? raise ArgumentError, "error_handler must accept 1 argument" unless handler.arity == 1 @error_handler = handler end def track(analytics_event) safe_action { underlying.track(analytics_event) } end def sign_up!(visitor_id) safe_action { underlying.sign_up!(visitor_id) } if underlying.respond_to?(:sign_up!) end private def error_handler @error_handler || ->(e) do Rails.logger.error e end end def safe_action yield true rescue StandardError => e error_handler.call e false end end end
Version data entries
16 entries across 16 versions & 1 rubygems