Sha256: 42d119560d304fd3441bbb6da4401d8c0a44c02b0054bd47a130a2541b7fc5c4

Contents?: true

Size: 1.31 KB

Versions: 1

Compression:

Stored size: 1.31 KB

Contents

class RollbarConfig
  attr_reader :server_token, :client_token, :environment

  def initialize(config)
    @enabled = config.fetch(:enabled, false)
    if enabled?
      @server_token = config.fetch(:server_token)
      @client_token = config.fetch(:client_token)
      @environment  = config.fetch(:environment)
    end
  end

  def enabled?
    @enabled
  end
end

class RollbarConfigurator
  ERROR_MESSAGE = 'rollbar not defined in secrets.yml'

  def initialize(configuration)
    @configuration = configuration
  end

  def configure
    notify_missing_configuration! unless @configuration.present?
    configure_rollbar
  end

  def rollbar_config
    @rollbar_config ||= RollbarConfig.new(@configuration.symbolize_keys)
  end

  private

  def configure_rollbar
    return unless rollbar_config.enabled?

    require 'rollbar'

    ::Rollbar.configure do |config|
      config.enabled      = true
      config.access_token = rollbar_config.server_token
      config.environment  = rollbar_config.environment
    end
  end

  def notify_missing_configuration!
    fail ERROR_MESSAGE
  end
end

config = if defined?(Rails)
           Rails.application.secrets.rollbar
         end
configurator = RollbarConfigurator.new(config)
configurator.configure

Rails.application.config.rollbar = configurator.rollbar_config if defined?(Rails)

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
production_toolkit-0.1.1 lib/production_toolkit/initializers/rollbar.rb