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



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

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



14
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
136
137
138
139
140
141
# File 'lib/rrj/tools/gem/config.rb', line 14

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::LevelNotDefine
  end

  def log_level_rabbit
    @options['rabbit']['level'].upcase.to_sym || :INFO
  rescue
    raise Errors::Tools::Config::LevelNotDefine
  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::TTLNotFound
  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['janus']['cluster']['enabled'].to_s.eql?('true') ? true : false
  rescue
    raise Errors::Tools::Config::Cluster
  end

  # Count number of Janus instances
  def number_of_instance
    @options['janus']['cluster']['count'].to_i || 1
  rescue
    raise Errors::Tools::Config::NumberOfInstance
  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.



14
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
136
137
138
139
140
141
# File 'lib/rrj/tools/gem/config.rb', line 14

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::LevelNotDefine
  end

  def log_level_rabbit
    @options['rabbit']['level'].upcase.to_sym || :INFO
  rescue
    raise Errors::Tools::Config::LevelNotDefine
  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::TTLNotFound
  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['janus']['cluster']['enabled'].to_s.eql?('true') ? true : false
  rescue
    raise Errors::Tools::Config::Cluster
  end

  # Count number of Janus instances
  def number_of_instance
    @options['janus']['cluster']['count'].to_i || 1
  rescue
    raise Errors::Tools::Config::NumberOfInstance
  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



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

def cluster
  @options['janus']['cluster']['enabled'].to_s.eql?('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



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

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

#log_level_rabbitObject



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

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

#number_of_instanceObject

Count number of Janus instances



118
119
120
121
122
# File 'lib/rrj/tools/gem/config.rb', line 118

def number_of_instance
  @options['janus']['cluster']['count'].to_i || 1
rescue
  raise Errors::Tools::Config::NumberOfInstance
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



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

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



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

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



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

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



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

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



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

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



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

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