Module: Gruf::Configuration

Included in:
Gruf
Defined in:
lib/gruf/configuration.rb

Overview

Represents configuration settings for the system

Constant Summary collapse

VALID_CONFIG_KEYS =
{
  root_path: '',
  server_binding_url: '0.0.0.0:9001',
  authentication_options: {},
  instrumentation_options: {},
  hook_options: {},
  default_client_host: '',
  use_ssl: false,
  ssl_crt_file: '',
  ssl_key_file: '',
  servers_path: '',
  services: [],
  logger: nil,
  grpc_logger: nil,
  error_metadata_key: :'error-internal-bin',
  error_serializer: nil,
  authorization_metadata_key: 'authorization',
  append_server_errors_to_trailing_metadata: true,
  use_default_hooks: true,
  backtrace_on_error: false
}.freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(base) ⇒ Object

Whenever this is extended into a class, setup the defaults



49
50
51
# File 'lib/gruf/configuration.rb', line 49

def self.extended(base)
  base.reset
end

Instance Method Details

#configure {|_self| ... } ⇒ Gruf::Configuration

Yield self for ruby-style initialization

Yields:

  • (_self)

Yield Parameters:

Returns:



59
60
61
# File 'lib/gruf/configuration.rb', line 59

def configure
  yield self
end

#optionsHash

Return the current configuration options as a Hash

Returns:

  • (Hash)


68
69
70
71
72
73
74
# File 'lib/gruf/configuration.rb', line 68

def options
  opts = {}
  VALID_CONFIG_KEYS.each do |k, _v|
    opts.merge!(k => send(k))
  end
  opts
end

#resetHash

Set the default configuration onto the extended class

Returns:

  • (Hash)

    options The reset options hash



81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# File 'lib/gruf/configuration.rb', line 81

def reset
  VALID_CONFIG_KEYS.each do |k, v|
    send((k.to_s + '=').to_sym, v)
  end
  if defined?(Rails) && Rails.logger
    self.root_path = Rails.root
    self.logger = Rails.logger
  else
    require 'logger'
    self.logger = ::Logger.new(STDOUT)
  end
  self.grpc_logger = logger if grpc_logger.nil?
  self.ssl_crt_file = "#{root_path}/config/ssl/#{environment}.crt"
  self.ssl_key_file = "#{root_path}/config/ssl/#{environment}.key"
  self.servers_path = "#{root_path}/app/rpc"
  self.authentication_options = {
    credentials: [{
      username: 'grpc',
      password: 'magic'
    }]
  }
  if use_default_hooks
    Gruf::Hooks::Registry.add(:ar_connection_reset, Gruf::Hooks::ActiveRecord::ConnectionReset)
    Gruf::Instrumentation::Registry.add(:output_metadata_timer, Gruf::Instrumentation::OutputMetadataTimer)
  end
  options
end