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',
  server_options: {},
  interceptors: nil,
  default_client_host: '',
  use_ssl: false,
  ssl_crt_file: '',
  ssl_key_file: '',
  controllers_path: '',
  services: [],
  logger: nil,
  grpc_logger: nil,
  error_metadata_key: :'error-internal-bin',
  error_serializer: nil,
  append_server_errors_to_trailing_metadata: true,
  use_default_interceptors: true,
  backtrace_on_error: false,
  use_exception_message: true,
  internal_error_message: 'Internal Server Error'
}.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



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

def self.extended(base)
  base.reset
end

Instance Method Details

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

Yield self for ruby-style initialization

Yields:

  • (_self)

Yield Parameters:



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

def configure
  yield self
end

#optionsHash

Return the current configuration options as a Hash



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

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

#resetHash

Set the default configuration onto the extended class



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

def reset
  VALID_CONFIG_KEYS.each do |k, v|
    send((k.to_s + '='), v)
  end
  self.interceptors = Gruf::Interceptors::Registry.new
  self.root_path = Rails.root.to_s.chomp('/') if defined?(Rails)
  if defined?(Rails) && Rails.logger
    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.controllers_path = root_path.to_s.empty? ? 'app/rpc' : "#{root_path}/app/rpc"
  if use_default_interceptors
    interceptors.use(Gruf::Interceptors::ActiveRecord::ConnectionReset)
    interceptors.use(Gruf::Interceptors::Instrumentation::OutputMetadataTimer)
  end
  options
end