Sha256: 4f1eb1668056a47586007bc1988ecd6e529ad245d7c46c2b0919727dcff86efd

Contents?: true

Size: 1.39 KB

Versions: 1

Compression:

Stored size: 1.39 KB

Contents

require "sentry-ruby"
require "sentry-rails" if defined?(Rails)
require "publishing_platform_app_config/publishing_platform_error/configuration"
require "publishing_platform_app_config/version"

module PublishingPlatformError
  class AlreadyInitialised < StandardError
    def initialize(msg = "You can only call PublishingPlatformError.configure once!")
      super
    end
  end

  def self.notify(exception_or_message, args = {})
    # Allow users to use `parameters` as a key like the Airbrake
    # client, allowing easy upgrades.
    args[:extra] ||= {}
    args[:extra].merge!(parameters: args.delete(:parameters))

    args[:tags] ||= {}
    args[:tags][:publishing_platform_app_config_version] = PublishingPlatformAppConfig::VERSION

    if exception_or_message.is_a?(String)
      Sentry.capture_message(exception_or_message, **args)
    else
      Sentry.capture_exception(exception_or_message, **args)
    end
  end

  def self.is_configured?
    Sentry.get_current_client != nil
  end

  def self.configure
    raise PublishingPlatformError::AlreadyInitialised if is_configured?

    if defined?(Sidekiq) && !defined?(Sentry::Sidekiq)
      warn "Warning: PublishingPlatformError is not configured to track Sidekiq errors, install the sentry-sidekiq gem to track them."
    end

    Sentry.init do |sentry_config|
      config = Configuration.new(sentry_config)
      yield config if block_given?
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
publishing_platform_app_config-0.2.1 lib/publishing_platform_app_config/publishing_platform_error.rb