Class: RubyRabbitmqJanus::Tools::Config

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/rrj/tools/gem/config.rb

Overview

# Manage configuration file Singleton object for reading configuration file

Constant Summary collapse

RRJ_HOME =

Define HOME RRJ gem

File.realpath(File.join(File.dirname(__FILE__),
'..', '..', '..'))
CONF_DEFAULT =

Define a default name to file configuration

'config/default.yml'
CONF_CUSTOM =

Define a default override file configuration

'config/ruby-rabbitmq-janus.yml'
PATH_DEFAULT =

Define a default path to file configuration to gem

File.join(RRJ_HOME, CONF_DEFAULT)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfig

Initialize configuration file default or customize if exist



34
35
36
37
38
39
40
41
# File 'lib/rrj/tools/gem/config.rb', line 34

def initialize
  @options = @configuration = nil
  loading_configuration_customize
  loading_configuration_default
  Tools::Log.instance.save_level(log_level)
rescue
  raise Errors::Tools::Config::Initialize
end

Instance Attribute Details

#configurationString (readonly)

Returns Path to configuration file used.

Returns:

  • (String)

    Path to configuration file used



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# File 'lib/rrj/tools/gem/config.rb', line 15

class Config
  include Singleton

  attr_reader :options, :configuration

  # Define HOME RRJ gem
  RRJ_HOME = File.realpath(File.join(File.dirname(__FILE__),
                                     '..', '..', '..'))

  # Define a default name to file configuration
  CONF_DEFAULT = 'config/default.yml'

  # Define a default override file configuration
  CONF_CUSTOM = 'config/ruby-rabbitmq-janus.yml'

  # Define a default path to file configuration to gem
  PATH_DEFAULT = File.join(RRJ_HOME, CONF_DEFAULT)

  # Initialize configuration file default or customize if exist
  def initialize
    @options = @configuration = nil
    loading_configuration_customize
    loading_configuration_default
    Tools::Log.instance.save_level(log_level)
  rescue
    raise Errors::Tools::Config::Initialize
  end

  # Get to name queue_from (pattern)
  #
  # @return [String] read configuration for queue `from`
  def queue_from
    @options['queues']['standard']['from'].to_s
  rescue
    raise Errors::Tools::Config::QueueFrom
  end

  # Get to name queue_to (pattern)
  #
  # @return [String] read configuration for queue `to`
  def queue_to
    @options['queues']['standard']['to'].to_s
  rescue
    raise Errors::Tools::Config::QueueTo
  end

  # Get to name queue_admin_from (pattern)
  #
  # @return [String] read configuration for queue admin `from`
  def queue_admin_from
    @options['queues']['admin']['from'].to_s
  rescue
    raise Errors::Tools::Config::QueueAdminFrom
  end

  # Get to name queue_admin_from (pattern)
  #
  # @return [String] read configuration for queue admin `to`
  def queue_admin_to
    @options['queues']['admin']['to'].to_s
  rescue
    raise Errors::Tools::Config::QueueAdminTo
  end

  # @return [Symbol] read configuration for log level used in this gem
  def log_level
    @options['gem']['log']['level'].upcase.to_sym || :INFO
  rescue
    raise Errors::Tools::Config::LogLevel
  end

  def log_level_rabbit
    @options['rabbit']['level'].upcase.to_sym || :INFO
  rescue
    raise Errors::Tools::Config::LogLevelRabbit
  end

  # @return [Integer]
  #   read configuration for janus time to live for keepalive messages
  def time_to_live
    @options['janus']['session']['keepalive'].to_i || 50
  rescue
    raise Errors::Tools::Config::TimeToLive
  end

  alias ttl time_to_live

  # @param [Fixnum] index determine what field is readint in array plugins
  #   in configuration file
  # @return [String] read configuration for plugin with index
  def plugin_at(index = 0)
    @options['janus']['plugins'][index].to_s
  rescue
    raise Errors::Tools::Config::PluginAt, index
  end

  # @return [Boolean] Read option file for a janus cluster section
  def cluster
    @options['gem']['cluster']['enabled'].to_s.match?('true') ? true : false
  rescue
    raise Errors::Tools::Config::Cluster
  end

  private

  def load_configuration
    log_message = "Loading configuration file : #{@configuration}"
    Tools::Log.instance.info(log_message)
    YAML.safe_load(ERB.new(File.read(@configuration)).result)
  end

  def loading_configuration_customize
    @configuration = File.join(Dir.pwd, CONF_CUSTOM)
    @options = load_configuration if File.exist?(@configuration)
  end

  def loading_configuration_default
    @configuration = PATH_DEFAULT
    @options ||= load_configuration
  end
end

#optionsHash (readonly)

Return all options to configured in config file.

Returns:

  • (Hash)

    Return all options to configured in config file.



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# File 'lib/rrj/tools/gem/config.rb', line 15

class Config
  include Singleton

  attr_reader :options, :configuration

  # Define HOME RRJ gem
  RRJ_HOME = File.realpath(File.join(File.dirname(__FILE__),
                                     '..', '..', '..'))

  # Define a default name to file configuration
  CONF_DEFAULT = 'config/default.yml'

  # Define a default override file configuration
  CONF_CUSTOM = 'config/ruby-rabbitmq-janus.yml'

  # Define a default path to file configuration to gem
  PATH_DEFAULT = File.join(RRJ_HOME, CONF_DEFAULT)

  # Initialize configuration file default or customize if exist
  def initialize
    @options = @configuration = nil
    loading_configuration_customize
    loading_configuration_default
    Tools::Log.instance.save_level(log_level)
  rescue
    raise Errors::Tools::Config::Initialize
  end

  # Get to name queue_from (pattern)
  #
  # @return [String] read configuration for queue `from`
  def queue_from
    @options['queues']['standard']['from'].to_s
  rescue
    raise Errors::Tools::Config::QueueFrom
  end

  # Get to name queue_to (pattern)
  #
  # @return [String] read configuration for queue `to`
  def queue_to
    @options['queues']['standard']['to'].to_s
  rescue
    raise Errors::Tools::Config::QueueTo
  end

  # Get to name queue_admin_from (pattern)
  #
  # @return [String] read configuration for queue admin `from`
  def queue_admin_from
    @options['queues']['admin']['from'].to_s
  rescue
    raise Errors::Tools::Config::QueueAdminFrom
  end

  # Get to name queue_admin_from (pattern)
  #
  # @return [String] read configuration for queue admin `to`
  def queue_admin_to
    @options['queues']['admin']['to'].to_s
  rescue
    raise Errors::Tools::Config::QueueAdminTo
  end

  # @return [Symbol] read configuration for log level used in this gem
  def log_level
    @options['gem']['log']['level'].upcase.to_sym || :INFO
  rescue
    raise Errors::Tools::Config::LogLevel
  end

  def log_level_rabbit
    @options['rabbit']['level'].upcase.to_sym || :INFO
  rescue
    raise Errors::Tools::Config::LogLevelRabbit
  end

  # @return [Integer]
  #   read configuration for janus time to live for keepalive messages
  def time_to_live
    @options['janus']['session']['keepalive'].to_i || 50
  rescue
    raise Errors::Tools::Config::TimeToLive
  end

  alias ttl time_to_live

  # @param [Fixnum] index determine what field is readint in array plugins
  #   in configuration file
  # @return [String] read configuration for plugin with index
  def plugin_at(index = 0)
    @options['janus']['plugins'][index].to_s
  rescue
    raise Errors::Tools::Config::PluginAt, index
  end

  # @return [Boolean] Read option file for a janus cluster section
  def cluster
    @options['gem']['cluster']['enabled'].to_s.match?('true') ? true : false
  rescue
    raise Errors::Tools::Config::Cluster
  end

  private

  def load_configuration
    log_message = "Loading configuration file : #{@configuration}"
    Tools::Log.instance.info(log_message)
    YAML.safe_load(ERB.new(File.read(@configuration)).result)
  end

  def loading_configuration_customize
    @configuration = File.join(Dir.pwd, CONF_CUSTOM)
    @options = load_configuration if File.exist?(@configuration)
  end

  def loading_configuration_default
    @configuration = PATH_DEFAULT
    @options ||= load_configuration
  end
end

Instance Method Details

#clusterBoolean

Returns Read option file for a janus cluster section.

Returns:

  • (Boolean)

    Read option file for a janus cluster section



112
113
114
115
116
# File 'lib/rrj/tools/gem/config.rb', line 112

def cluster
  @options['gem']['cluster']['enabled'].to_s.match?('true') ? true : false
rescue
  raise Errors::Tools::Config::Cluster
end

#log_levelSymbol

Returns read configuration for log level used in this gem.

Returns:

  • (Symbol)

    read configuration for log level used in this gem



80
81
82
83
84
# File 'lib/rrj/tools/gem/config.rb', line 80

def log_level
  @options['gem']['log']['level'].upcase.to_sym || :INFO
rescue
  raise Errors::Tools::Config::LogLevel
end

#log_level_rabbitObject



86
87
88
89
90
# File 'lib/rrj/tools/gem/config.rb', line 86

def log_level_rabbit
  @options['rabbit']['level'].upcase.to_sym || :INFO
rescue
  raise Errors::Tools::Config::LogLevelRabbit
end

#plugin_at(index = 0) ⇒ String

Returns read configuration for plugin with index.

Parameters:

  • index (Fixnum) (defaults to: 0)

    determine what field is readint in array plugins in configuration file

Returns:

  • (String)

    read configuration for plugin with index



105
106
107
108
109
# File 'lib/rrj/tools/gem/config.rb', line 105

def plugin_at(index = 0)
  @options['janus']['plugins'][index].to_s
rescue
  raise Errors::Tools::Config::PluginAt, index
end

#queue_admin_fromString

Get to name queue_admin_from (pattern)

Returns:

  • (String)

    read configuration for queue admin ‘from`



64
65
66
67
68
# File 'lib/rrj/tools/gem/config.rb', line 64

def queue_admin_from
  @options['queues']['admin']['from'].to_s
rescue
  raise Errors::Tools::Config::QueueAdminFrom
end

#queue_admin_toString

Get to name queue_admin_from (pattern)

Returns:

  • (String)

    read configuration for queue admin ‘to`



73
74
75
76
77
# File 'lib/rrj/tools/gem/config.rb', line 73

def queue_admin_to
  @options['queues']['admin']['to'].to_s
rescue
  raise Errors::Tools::Config::QueueAdminTo
end

#queue_fromString

Get to name queue_from (pattern)

Returns:

  • (String)

    read configuration for queue ‘from`



46
47
48
49
50
# File 'lib/rrj/tools/gem/config.rb', line 46

def queue_from
  @options['queues']['standard']['from'].to_s
rescue
  raise Errors::Tools::Config::QueueFrom
end

#queue_toString

Get to name queue_to (pattern)

Returns:

  • (String)

    read configuration for queue ‘to`



55
56
57
58
59
# File 'lib/rrj/tools/gem/config.rb', line 55

def queue_to
  @options['queues']['standard']['to'].to_s
rescue
  raise Errors::Tools::Config::QueueTo
end

#time_to_liveInteger Also known as: ttl

Returns read configuration for janus time to live for keepalive messages.

Returns:

  • (Integer)

    read configuration for janus time to live for keepalive messages



94
95
96
97
98
# File 'lib/rrj/tools/gem/config.rb', line 94

def time_to_live
  @options['janus']['session']['keepalive'].to_i || 50
rescue
  raise Errors::Tools::Config::TimeToLive
end