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

Version Path
test_track_rails_client-8.1.1 app/models/test_track/analytics/safe_wrapper.rb
test_track_rails_client-8.1.0 app/models/test_track/analytics/safe_wrapper.rb
test_track_rails_client-8.0.0 app/models/test_track/analytics/safe_wrapper.rb
test_track_rails_client-7.1.2 app/models/test_track/analytics/safe_wrapper.rb
test_track_rails_client-7.1.1 app/models/test_track/analytics/safe_wrapper.rb
test_track_rails_client-7.0.0 app/models/test_track/analytics/safe_wrapper.rb
test_track_rails_client-6.0.0 app/models/test_track/analytics/safe_wrapper.rb
test_track_rails_client-5.0.1 app/models/test_track/analytics/safe_wrapper.rb
test_track_rails_client-5.0.0 app/models/test_track/analytics/safe_wrapper.rb
test_track_rails_client-4.0.2 app/models/test_track/analytics/safe_wrapper.rb
test_track_rails_client-4.0.1 app/models/test_track/analytics/safe_wrapper.rb
test_track_rails_client-4.0.0 app/models/test_track/analytics/safe_wrapper.rb
test_track_rails_client-4.0.0.rc3 app/models/test_track/analytics/safe_wrapper.rb
test_track_rails_client-4.0.0.rc2 app/models/test_track/analytics/safe_wrapper.rb
test_track_rails_client-4.0.0.alpha35 app/models/test_track/analytics/safe_wrapper.rb
test_track_rails_client-4.0.0.alpha34 app/models/test_track/analytics/safe_wrapper.rb