rservicebus2 0.2.7 → 0.2.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rservicebus2.rb +6 -5
  3. data/lib/rservicebus2/agent.rb +7 -4
  4. data/lib/rservicebus2/appresource.rb +8 -9
  5. data/lib/rservicebus2/appresource/awss3.rb +3 -3
  6. data/lib/rservicebus2/appresource/awssqs.rb +2 -0
  7. data/lib/rservicebus2/appresource/dir.rb +3 -0
  8. data/lib/rservicebus2/appresource/file.rb +2 -0
  9. data/lib/rservicebus2/appresource/fluiddb.rb +3 -0
  10. data/lib/rservicebus2/appresource/fluiddb2.rb +3 -1
  11. data/lib/rservicebus2/appresource_configure.rb +8 -4
  12. data/lib/rservicebus2/audit.rb +4 -2
  13. data/lib/rservicebus2/circuitbreaker.rb +4 -2
  14. data/lib/rservicebus2/config.rb +44 -35
  15. data/lib/rservicebus2/cron_manager.rb +6 -1
  16. data/lib/rservicebus2/endpointmapping.rb +20 -14
  17. data/lib/rservicebus2/errormessage.rb +3 -2
  18. data/lib/rservicebus2/handler_loader.rb +35 -28
  19. data/lib/rservicebus2/handler_manager.rb +31 -25
  20. data/lib/rservicebus2/helper_functions.rb +20 -15
  21. data/lib/rservicebus2/host.rb +63 -124
  22. data/lib/rservicebus2/message.rb +11 -19
  23. data/lib/rservicebus2/message/statisticoutput.rb +2 -0
  24. data/lib/rservicebus2/message/subscription.rb +2 -0
  25. data/lib/rservicebus2/message/verboseoutput.rb +2 -0
  26. data/lib/rservicebus2/monitor.rb +7 -7
  27. data/lib/rservicebus2/monitor/awss3.rb +3 -1
  28. data/lib/rservicebus2/monitor/awssqs.rb +9 -7
  29. data/lib/rservicebus2/monitor/dir.rb +25 -23
  30. data/lib/rservicebus2/monitor/dirnotifier.rb +3 -0
  31. data/lib/rservicebus2/monitor/message.rb +2 -0
  32. data/lib/rservicebus2/monitor/xmldir.rb +2 -0
  33. data/lib/rservicebus2/monitor_configure.rb +47 -37
  34. data/lib/rservicebus2/mq.rb +27 -30
  35. data/lib/rservicebus2/mq/beanstalk.rb +5 -1
  36. data/lib/rservicebus2/resource_manager.rb +14 -19
  37. data/lib/rservicebus2/saga/data.rb +1 -1
  38. data/lib/rservicebus2/saga/manager.rb +2 -2
  39. data/lib/rservicebus2/saga_loader.rb +27 -24
  40. data/lib/rservicebus2/saga_storage.rb +5 -4
  41. data/lib/rservicebus2/sendat_manager.rb +5 -3
  42. data/lib/rservicebus2/sendat_storage.rb +5 -3
  43. data/lib/rservicebus2/sendat_storage/file.rb +6 -2
  44. data/lib/rservicebus2/sendat_storage/inmemory.rb +2 -0
  45. data/lib/rservicebus2/state_manager.rb +5 -4
  46. data/lib/rservicebus2/state_storage.rb +7 -6
  47. data/lib/rservicebus2/statistic_manager.rb +7 -3
  48. data/lib/rservicebus2/subscription_manager.rb +7 -5
  49. data/lib/rservicebus2/subscription_storage.rb +6 -5
  50. data/lib/rservicebus2/subscription_storage/file.rb +5 -18
  51. data/lib/rservicebus2/subscription_storage_configure.rb +2 -0
  52. data/lib/rservicebus2/transporter.rb +63 -52
  53. metadata +2 -3
  54. data/lib/rservicebus2/stats.rb +0 -68
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RServiceBus2
2
4
  # Marshals data for message end points
3
5
  # Expected format: <msg mame 1>:<end point 1>;<msg mame 2>:<end point 2>
@@ -6,16 +8,17 @@ module RServiceBus2
6
8
  RServiceBus2.get_value(name)
7
9
  end
8
10
 
9
- def log(string, _ver = false)
11
+ def log(string, _ver: false)
10
12
  RServiceBus2.log(string)
11
13
  end
12
14
 
15
+ # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
13
16
  def configure_mapping(mapping)
14
17
  match = mapping.match(/(.+):(.+)/)
15
18
  if match.nil?
16
- log 'Mapping string provided is invalid'
17
- log "The entire mapping string is: #{mapping}"
18
- log "*** Could not find ':' in mapping entry, #{line}"
19
+ log 'Mapping string provided is invalid\n' \
20
+ "The entire mapping string is: #{mapping}\n" \
21
+ "*** Could not find ':' in mapping entry, #{line}\n"
19
22
  exit
20
23
  end
21
24
 
@@ -23,16 +26,18 @@ module RServiceBus2
23
26
  @endpoints[match[1]] = match[2]
24
27
 
25
28
  @queue_name_list.each do |q|
26
- if q != match[2] && q.downcase == match[2].downcase
27
- log('*** Two queues specified with only case sensitive difference.')
28
- log("*** #{q} != #{match[2]}")
29
- log('*** If you meant these queues to be the same, please match case
30
- and restart the bus.')
31
- end
29
+ next unless q != match[2] && q.downcase == match[2].downcase
30
+
31
+ log('*** Two queues specified with only case sensitive difference.')
32
+ log("*** #{q} != #{match[2]}")
33
+ log('*** If you meant these queues to be the same, please match case
34
+ and restart the bus.')
32
35
  end
33
36
  @queue_name_list << match[2]
34
37
  end
38
+ # rubocop:enable Metrics/AbcSize, Metrics/MethodLength
35
39
 
40
+ # rubocop:disable Metrics/MethodLength
36
41
  def configure(local_queue_name = nil)
37
42
  log('EndpointMapping.Configure')
38
43
 
@@ -40,9 +45,9 @@ module RServiceBus2
40
45
  @queue_name_list << local_queue_name unless local_queue_name.nil?
41
46
 
42
47
  unless get_value('MESSAGE_ENDPOINT_MAPPING').nil?
43
- log('*** MESSAGE_ENDPOINT_MAPPING environment variable was detected')
44
- log("*** You may have intended MESSAGE_ENDPOINT_MAPPINGS, note the 'S'
45
- on the end")
48
+ log '*** MESSAGE_ENDPOINT_MAPPING environment variable was detected\n' \
49
+ "*** You may have intended MESSAGE_ENDPOINT_MAPPINGS, note the 'S'
50
+ on the end"
46
51
  end
47
52
 
48
53
  mappings = get_value('MESSAGE_ENDPOINT_MAPPINGS')
@@ -54,6 +59,7 @@ module RServiceBus2
54
59
 
55
60
  self
56
61
  end
62
+ # rubocop:enable Metrics/MethodLength
57
63
 
58
64
  def initialize
59
65
  @endpoints = {}
@@ -65,7 +71,7 @@ module RServiceBus2
65
71
  nil
66
72
  end
67
73
 
68
- def get_subscription_endpoints
74
+ def subscription_endpoints
69
75
  @endpoints.keys.select { |el| el.end_with?('Event') }
70
76
  end
71
77
  end
@@ -1,11 +1,12 @@
1
- module RServiceBus2
1
+ # frozen_string_literal: true
2
2
 
3
+ module RServiceBus2
3
4
  # Error Message
4
5
  class ErrorMessage
5
6
  attr_reader :occurredat, :source_queue, :error_msg
6
7
 
7
8
  def initialize(source_queue, error_msg)
8
- @occurredat = DateTime.now
9
+ @occurredat = Time.now
9
10
 
10
11
  @source_queue = source_queue
11
12
  @error_msg = error_msg
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RServiceBus2
2
4
  # Given a directory, this class is responsible for finding
3
5
  # msgnames,
4
6
  # handlernames, and
5
7
  # loading handlers
6
8
  class HandlerLoader
7
- attr_reader :handlerList
9
+ # attr_reader :handlerList - 8 May 2021
8
10
 
9
11
  # Constructor
10
12
  #
@@ -22,12 +24,11 @@ module RServiceBus2
22
24
  # Cleans the given path to ensure it can be used for as a parameter for the require statement.
23
25
  # @param [String] file_path the path to be cleaned
24
26
  def get_require_path(file_path)
25
- file_path = './' + file_path unless file_path.start_with?('/')
27
+ file_path = "./#{file_path}" unless file_path.start_with?('/')
26
28
 
27
29
  return file_path.sub('.rb', '') if File.exist?(file_path)
28
30
 
29
- abort('Filepath, ' + file_path + ", given for messagehandler require
30
- doesn't exist")
31
+ abort("Filepath, #{file_path}, given for messagehandler require doesn't exist")
31
32
  end
32
33
 
33
34
  # Instantiate the handler named in handlerName from the file name in
@@ -38,6 +39,7 @@ module RServiceBus2
38
39
  # @param [String] handler_name name of the handler to instantiate
39
40
  # @param [String] file_path the path to the file to be loaded
40
41
  # @return [RServiceBus2::Handler] the loader
42
+ # rubocop:disable Metrics/MethodLength
41
43
  def load_handler_from_file(handler_name, file_path)
42
44
  require_path = get_require_path(file_path)
43
45
 
@@ -45,22 +47,22 @@ module RServiceBus2
45
47
  begin
46
48
  handler = Object.const_get(handler_name).new
47
49
  rescue StandardError => e
48
- puts 'Expected class name: ' + handler_name + ', not found after
49
- require: ' + require_path
50
- puts '**** Check in ' + file_path + ' that the class is named : ' +
51
- handler_name
52
- puts '( In case its not that )'
50
+ puts "Expected class name: #{handler_name}, not found after require: #{require_path}\n" \
51
+ "**** Check in #{file_path} that the class is named: #{handler_name}\n" \
52
+ '( In case its not that )'
53
53
  raise e
54
54
  end
55
55
 
56
56
  handler
57
57
  end
58
+ # rubocop:enable Metrics/MethodLength
58
59
 
59
60
  # Wrapper function
60
61
  #
61
62
  # @param [String] file_path
62
63
  # @param [String] handler_name
63
64
  # @returns [RServiceBus2::Handler] handler
65
+ # rubocop:disable Metrics/MethodLength
64
66
  def load_handler(msg_name, file_path, handler_name)
65
67
  if @list_of_loaded_paths.key?(file_path)
66
68
  RServiceBus2.log "Not reloading, #{file_path}"
@@ -68,29 +70,30 @@ module RServiceBus2
68
70
  end
69
71
 
70
72
  begin
71
- RServiceBus2.rlog 'file_path: ' + file_path
72
- RServiceBus2.rlog 'handler_name: ' + handler_name
73
+ RServiceBus2.rlog "file_path: #{file_path}"
74
+ RServiceBus2.rlog "handler_name: #{handler_name}"
73
75
 
74
76
  handler = load_handler_from_file(handler_name, file_path)
75
- RServiceBus2.log 'Loaded Handler: ' + handler_name
77
+ RServiceBus2.log "Loaded Handler: #{handler_name}"
76
78
 
77
79
  @handler_manager.add_handler(msg_name, handler)
78
80
 
79
81
  @list_of_loaded_paths[file_path] = 1
80
82
  rescue StandardError => e
81
- puts 'Exception loading handler from file: ' + file_path
83
+ puts "Exception loading handler from file: #{file_path}"
82
84
  puts e.message
83
85
  puts e.backtrace[0]
84
86
  abort
85
87
  end
86
88
  end
89
+ # rubocop:enable Metrics/MethodLength
87
90
 
88
91
  # This method is overloaded for unit tests
89
92
  #
90
93
  # @param [String] path directory to check
91
94
  # @return [Array] a list of paths to files found in the given path
92
95
  def get_list_of_files_for_dir(path)
93
- list = Dir[path + '/*']
96
+ list = Dir["#{path}/*"]
94
97
  RServiceBus2.rlog "HandlerLoader.getListOfFilesForDir. path: #{path},
95
98
  list: #{list}"
96
99
  list
@@ -105,14 +108,14 @@ module RServiceBus2
105
108
  def load_handlers_from_second_level_path(msg_name, base_dir)
106
109
  get_list_of_files_for_dir(base_dir).each do |file_path|
107
110
  next if file_path.end_with?('.')
111
+ next unless !File.directory?(file_path) && File.extname(file_path) == '.rb'
108
112
 
109
- ext_name = File.extname(file_path)
110
- if !File.directory?(file_path) && ext_name == '.rb'
111
- file_name = File.basename(file_path).sub('.rb', '')
112
- handler_name = "message_handler_#{msg_name}_#{file_name}".gsub(/(?<=_|^)(\w)/){$1.upcase}.gsub(/(?:_)(\w)/,'\1') # Classify
113
+ file_name = File.basename(file_path).sub('.rb', '')
114
+ # Classify
115
+ handler_name = "message_handler_#{msg_name}_#{file_name}"
116
+ .gsub(/(?<=_|^)(\w)/) { Regexp.last_match(1).upcase }.gsub(/(?:_)(\w)/, '\1')
113
117
 
114
- load_handler(msg_name, file_path, handler_name)
115
- end
118
+ load_handler(msg_name, file_path, handler_name)
116
119
  end
117
120
 
118
121
  self
@@ -130,22 +133,26 @@ module RServiceBus2
130
133
  # Load top level handlers from the given directory
131
134
  #
132
135
  # @param [String] baseDir directory to check - should not have trailing slash
136
+ # rubocop:disable Metrics/MethodLength
133
137
  def load_handlers_from_top_level_path(base_dir)
134
138
  RServiceBus2.rlog "HandlerLoader.loadHandlersFromTopLevelPath. baseDir: #{base_dir}"
135
139
  get_list_of_files_for_dir(base_dir).each do |file_path|
136
- unless file_path.end_with?('.')
137
- msg_name = get_msg_name(file_path)
138
- if File.directory?(file_path)
139
- load_handlers_from_second_level_path(msg_name, file_path)
140
- else
141
- handler_name = "message_handler_#{msg_name}".gsub(/(?<=_|^)(\w)/){$1.upcase}.gsub(/(?:_)(\w)/,'\1') # Classify
142
- load_handler(msg_name, file_path, handler_name)
143
- end
140
+ next if file_path.end_with?('.')
141
+
142
+ msg_name = get_msg_name(file_path)
143
+ if File.directory?(file_path)
144
+ load_handlers_from_second_level_path(msg_name, file_path)
145
+ else
146
+ # Classify
147
+ handler_name = "message_handler_#{msg_name}"
148
+ .gsub(/(?<=_|^)(\w)/) { Regexp.last_match(1).upcase }.gsub(/(?:_)(\w)/, '\1')
149
+ load_handler(msg_name, file_path, handler_name)
144
150
  end
145
151
  end
146
152
 
147
153
  self
148
154
  end
155
+ # rubocop:enable Metrics/MethodLength
149
156
 
150
157
  # Entry point for loading handlers
151
158
  #
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RServiceBus2
2
4
  # Given a directory, this class is responsible for finding
3
5
  # msgnames,
@@ -20,10 +22,10 @@ module RServiceBus2
20
22
  # setBusAttributeIfRequested
21
23
  #
22
24
  # @param [RServiceBus2::Handler] handler
23
- def set_bus_attribute_if_requested(handler)
25
+ def conditionally_set_bus_attribute(handler)
24
26
  if defined?(handler.bus)
25
27
  handler.bus = @host
26
- RServiceBus2.log 'Bus attribute set for: ' + handler.class.name
28
+ RServiceBus2.log "Bus attribute set for: #{handler.class.name}"
27
29
  end
28
30
 
29
31
  self
@@ -32,10 +34,10 @@ module RServiceBus2
32
34
  # setStateAttributeIfRequested
33
35
  #
34
36
  # @param [RServiceBus2::Handler] handler
35
- def set_state_attribute_if_requested(handler)
37
+ def conditionally_set_state_attribute(handler)
36
38
  if defined?(handler.state)
37
39
  handler.state = @state_manager.get(handler)
38
- RServiceBus2.log 'Bus attribute set for: ' + handler.class.name
40
+ RServiceBus2.log "Bus attribute set for: #{handler.class.name}"
39
41
  end
40
42
 
41
43
  self
@@ -50,29 +52,29 @@ module RServiceBus2
50
52
  self
51
53
  end
52
54
 
55
+ # rubocop:disable Metrics/AbcSize
53
56
  def interrogate_handler_for_app_resources(handler)
54
- RServiceBus2.rlog "Checking app resources for: #{handler.class.name}"
55
- RServiceBus2.rlog "If your attribute is not getting set, check that it is in the 'attr_accessor' list"
57
+ RServiceBus2.rlog "Checking app resources for: #{handler.class.name}\n" \
58
+ "If your attribute is not getting set, check that it is in the 'attr_accessor' list"
56
59
 
57
60
  @resource_list_by_handler_name[handler.class.name] = []
58
- @resource_manager.get_all.each do |k, v|
61
+ @resource_manager.all.each do |k, _v|
59
62
  next unless handler.class.method_defined?(k)
60
63
 
61
64
  @resource_list_by_handler_name[handler.class.name] << k
62
- RServiceBus2.log "Resource attribute, #{k}, found for: " +
63
- handler.class.name
65
+ RServiceBus2.log "Resource attribute, #{k}, found for: #{handler.class.name}"
64
66
  end
65
-
66
- self
67
67
  end
68
+ # rubocop:enable Metrics/AbcSize
68
69
 
69
70
  def add_handler(lc_msg_name, handler)
70
- msg_name = lc_msg_name.gsub(/(?<=_|^)(\w)/){$1.upcase}.gsub(/(?:_)(\w)/,'\1') # Turn snake_case string to CamelCase
71
+ # Turn snake_case string to CamelCase
72
+ msg_name = lc_msg_name.gsub(/(?<=_|^)(\w)/) { Regexp.last_match(1).upcase }.gsub(/(?:_)(\w)/, '\1')
71
73
  @handler_list[msg_name] = [] if @handler_list[msg_name].nil?
72
- return unless @handler_list[msg_name].index{ |x| x.class.name == handler.class.name }.nil?
74
+ return unless @handler_list[msg_name].index { |x| x.instance_of(handler) }.nil?
73
75
 
74
76
  @handler_list[msg_name] << handler
75
- set_bus_attribute_if_requested(handler)
77
+ conditionally_set_bus_attribute(handler)
76
78
  check_if_state_attribute_requested(handler)
77
79
  interrogate_handler_for_app_resources(handler)
78
80
  end
@@ -86,28 +88,32 @@ module RServiceBus2
86
88
 
87
89
  list = []
88
90
  @handler_list[msg_name].each do |handler|
89
- list = list + @resource_list_by_handler_name[handler.class.name] unless @resource_list_by_handler_name[handler.class.name].nil?
91
+ unless @resource_list_by_handler_name[handler.class.name].nil?
92
+ list += @resource_list_by_handler_name[handler.class.name]
93
+ end
90
94
  end
91
95
  list.uniq!
92
96
  end
93
97
 
94
- def set_resources_for_handlers_needed_to_process_msg(msg_name)
98
+ # rubocop:disable Metrics/AbcSize
99
+ def conditionally_set_resources_for_handlers(msg_name)
95
100
  @handler_list[msg_name].each do |handler|
96
- set_state_attribute_if_requested(handler)
97
-
101
+ conditionally_set_state_attribute(handler)
98
102
  next if @resource_list_by_handler_name[handler.class.name].nil?
103
+
99
104
  @resource_list_by_handler_name[handler.class.name].each do |k|
100
- handler.instance_variable_set("@#{k}", @resource_manager.get(k).get_resource)
101
- RServiceBus2.rlog "App resource attribute, #{k}, set for: " + handler.class.name
105
+ handler.instance_variable_set("@#{k}", @resource_manager.get(k).resource)
106
+ RServiceBus2.rlog "App resource attribute, #{k}, set for: #{handler.class.name}"
102
107
  end
103
108
  end
104
109
  end
110
+ # rubocop:enable Metrics/AbcSize
105
111
 
106
112
  def get_handler_list_for_msg(msg_name)
107
113
  return [] if @handler_list[msg_name].nil?
108
114
 
109
- list = get_list_of_resources_needed_to_process_msg(msg_name)
110
- set_resources_for_handlers_needed_to_process_msg(msg_name)
115
+ # list = get_list_of_resources_needed_to_process_msg(msg_name)
116
+ conditionally_set_resources_for_handlers(msg_name)
111
117
 
112
118
  @handler_list[msg_name]
113
119
  end
@@ -116,16 +122,16 @@ module RServiceBus2
116
122
  @handler_list.key?(msg_name)
117
123
  end
118
124
 
119
- def get_stats
125
+ def stats
120
126
  list = []
121
- @handler_list.each do |k, v|
127
+ @handler_list.each do |_k, v|
122
128
  list << v.inspect
123
129
  end
124
130
 
125
131
  list
126
132
  end
127
133
 
128
- def get_list_of_msg_names
134
+ def msg_names
129
135
  @handler_list.keys
130
136
  end
131
137
  end
@@ -1,3 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Helper functions
1
4
  module RServiceBus2
2
5
  def self.convert_dto_to_hash(obj)
3
6
  hash = {}
@@ -11,14 +14,14 @@ module RServiceBus2
11
14
  convert_dto_to_hash(obj).to_json
12
15
  end
13
16
 
14
- def self.log(string, ver = false)
17
+ def self.log(string, ver: false)
15
18
  return if check_environment_variable('TESTING')
16
19
 
17
20
  type = ver ? 'VERB' : 'INFO'
18
- if check_environment_variable('VERBOSE') || !ver
19
- timestamp = Time.new.strftime('%Y-%m-%d %H:%M:%S')
20
- puts "[#{type}] #{timestamp} :: #{string}"
21
- end
21
+ return unless check_environment_variable('VERBOSE') || !ver
22
+
23
+ timestamp = Time.new.strftime('%Y-%m-%d %H:%M:%S')
24
+ puts "[#{type}] #{timestamp} :: #{string}"
22
25
  end
23
26
 
24
27
  def self.rlog(string)
@@ -35,11 +38,12 @@ module RServiceBus2
35
38
  end
36
39
 
37
40
  def self.get_value(name, default = nil)
38
- value = (ENV[name].nil? || ENV[name] == '') ? default : ENV[name]
41
+ value = ENV[name].nil? || ENV[name] == '' ? default : ENV[name]
39
42
  log "Env value: #{name}: #{value}"
40
43
  value
41
44
  end
42
45
 
46
+ # rubocop:disable Metrics/MethodLength
43
47
  def self.send_msg(msg, response_queue = 'agent')
44
48
  require 'rservicebus2/endpointmapping'
45
49
  endpoint_mapping = EndpointMapping.new
@@ -50,15 +54,13 @@ module RServiceBus2
50
54
  agent = RServiceBus2::Agent.new
51
55
  Audit.new(agent).audit_to_queue(msg)
52
56
  agent.send_msg(msg, queue_name, response_queue)
53
-
54
57
  rescue QueueNotFoundForMsg => e
55
- msg = "\n"
56
- msg = "#{msg}*** Queue not found for, #{e.message}\n"
57
- msg = "#{msg}*** Ensure you have an environment variable set for this
58
- Message Type, eg, \n"
59
- msg = "#{msg}*** MESSAGE_ENDPOINT_MAPPINGS=#{e.message}:<QueueName>\n"
60
- raise StandardError, msg
58
+ raise StandardError, '' \
59
+ "*** Queue not found for, #{e.message}\n" \
60
+ "*** Ensure you have an environment variable set for this Message Type, eg, \n" \
61
+ "*** MESSAGE_ENDPOINT_MAPPINGS=#{e.message}:<QueueName>\n"
61
62
  end
63
+ # rubocop:enable Metrics/MethodLength
62
64
 
63
65
  def self.check_for_reply(queue_name)
64
66
  ENV['RSBMQ'] = 'beanstalk://localhost' if ENV['RSBMQ'].nil?
@@ -74,12 +76,15 @@ module RServiceBus2
74
76
  #{caller[0]}. #{string}"
75
77
  end
76
78
 
79
+ # rubocop:disable Metrics/CyclomaticComplexity
77
80
  def self.check_environment_variable(string)
78
- return false if ENV[string].nil?
81
+ return false if ENV[string].nil? || ENV[string] == ''
79
82
  return true if ENV[string] == true || ENV[string] =~ (/(true|t|yes|y|1)$/i)
80
83
  return false if ENV[string] == false ||
81
84
  ENV[string].nil? ||
82
85
  ENV[string] =~ (/(false|f|no|n|0)$/i)
83
- fail ArgumentError, "invalid value for Environment Variable: \"#{string}\""
86
+
87
+ raise ArgumentError, "invalid value for Environment Variable: \"#{string}\""
84
88
  end
89
+ # rubocop:enable Metrics/CyclomaticComplexity
85
90
  end