process_settings 0.11.0.pre.2 → 0.11.0.pre.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f0f65d96e096213f9c86c00d170f46a7c2f316cafa73b1689f1a2e8c4533a04c
4
- data.tar.gz: 78ed8448055b794871c8ac1d3a59f4d5535c4c089f09228fab99de0032e29f9f
3
+ metadata.gz: be2ecaa41e362b6bbdfdb93a2ad08ec6e61bb444b43a757acc2062ce3e666fbc
4
+ data.tar.gz: 4cdecb04dbde4ba79bd0dd41ae4e2a37591b8aa1c1bc09a6d5b2c23f0d3ec409
5
5
  SHA512:
6
- metadata.gz: 3bdadd58245649ae32c928a73b58d024969ef267ce79db90ee1caaf3031d79928ca2d207cb19a37f07c480a5c783eefe6f276308bff2acd524b2e30246bbdfd3
7
- data.tar.gz: 5076a8f2fd8abfbe4e0e1cb7718d71abad25f95a4d5e3e75ca7ffefa14b84f1d48e11eb36f39f3a35944bdbe39d95fb41a1306faf06d02490fcc7ad044b3253d
6
+ metadata.gz: 4e23f89dd2cdc890074d3fdb3eac84702a6e791ecfa61bb954fb1ed1addda947f0f21041ce2f485e0808ca6fb75a5d7137663b8777434b22c1596f2def0c2bb1
7
+ data.tar.gz: 74e411fae551d1a14fb39e7cd1a769b2515a9e25bdf72844ba1d3c1510abd833bf3ae6ecd047bd21112746e9836bfc9d6da60616bba644532c44bfe30de90a32
@@ -3,6 +3,7 @@
3
3
  require 'active_support'
4
4
  require 'listen'
5
5
  require 'psych'
6
+ require 'active_support/deprecation'
6
7
 
7
8
  require 'process_settings/abstract_monitor'
8
9
  require 'process_settings/targeted_settings'
@@ -12,7 +13,7 @@ module ProcessSettings
12
13
  class FileMonitor < AbstractMonitor
13
14
  attr_reader :file_path, :untargeted_settings
14
15
 
15
- def initialize(file_path, logger:)
16
+ def initialize(file_path, logger:, environment: nil)
16
17
  super(logger: logger)
17
18
 
18
19
  @file_path = File.expand_path(file_path)
@@ -20,56 +21,26 @@ module ProcessSettings
20
21
  @untargeted_settings = nil
21
22
  @last_untargetted_settings = nil
22
23
 
23
- start
24
+ start_internal(enable_listen_thread?(environment))
24
25
  end
25
26
 
26
- # starts listening for changes
27
- # Note: This method creates a new thread that will be monitoring for changes
28
- # do to the nature of how the Listen gem works, there is no record of
29
- # existing threads, calling this mutliple times will result in spinning off
30
- # multiple listen threads and will have unknow effects
31
27
  def start
32
- path = File.dirname(file_path)
33
-
34
- # to eliminate any race condition:
35
- # 1. set up file watcher
36
- # 2. start it (this should trigger if any changes have been made since (1))
37
- # 3. load the file
38
-
39
- @listener = file_change_notifier.to(path) do |modified, added, _removed|
40
- if modified.include?(file_path) || added.include?(file_path)
41
- logger.info("ProcessSettings::Monitor file #{file_path} changed. Reloading.")
42
- load_untargeted_settings
43
-
44
- load_statically_targeted_settings
45
- end
46
- end
47
-
48
- if enable_listen_thread?
49
- @listener.start
50
- end
51
-
52
- load_untargeted_settings
53
- load_statically_targeted_settings
54
- end
55
-
56
- # stops listening for changes
57
- def stop
58
- @listener&.stop
28
+ start_internal(enable_listen_thread?)
59
29
  end
30
+ deprecate :start, deprecator: ActiveSupport::Deprecation.new('1.0', 'ProcessSettings') # will become private
60
31
 
61
- def enable_listen_thread?
32
+ def enable_listen_thread?(environment)
62
33
  !disable_listen_thread?
63
34
  end
64
35
 
65
- def disable_listen_thread?
36
+ def disable_listen_thread?(environment = nil)
66
37
  case ENV['DISABLE_LISTEN_CHANGE_MONITORING']
67
38
  when 'true', '1'
68
39
  true
69
40
  when 'false', '0'
70
41
  false
71
42
  when nil
72
- service_env == 'test'
43
+ environment || service_env == 'test'
73
44
  else
74
45
  raise ArgumentError, "DISABLE_LISTEN_CHANGE_MONITORING has unknown value #{ENV['DISABLE_LISTEN_CHANGE_MONITORING'].inspect}"
75
46
  end
@@ -77,8 +48,46 @@ module ProcessSettings
77
48
 
78
49
  private
79
50
 
51
+ # optionally starts listening for changes, then loads current settings
52
+ # Note: If with_listen_thread is truthy, this method creates a new thread that will be
53
+ # monitoring for changes.
54
+ # Due to how the Listen gem works, there is no record of
55
+ # existing threads; calling this multiple times will result in spinning off
56
+ # multiple listen threads and will have unknown effects.
57
+ def start_internal(with_listen_thread)
58
+ if with_listen_thread
59
+ path = File.dirname(file_path)
60
+
61
+ # to eliminate any race condition:
62
+ # 1. set up file watcher
63
+ # 2. start it (this should trigger if any changes have been made since (1))
64
+ # 3. load the file
65
+
66
+ @listener = file_change_notifier.to(path) do |modified, added, _removed|
67
+ if modified.include?(file_path) || added.include?(file_path)
68
+ logger.info("ProcessSettings::Monitor file #{file_path} changed. Reloading.")
69
+ load_untargeted_settings
70
+
71
+ load_statically_targeted_settings
72
+ end
73
+ end
74
+
75
+ @listener.start
76
+ end
77
+
78
+ load_untargeted_settings
79
+ load_statically_targeted_settings
80
+ end
81
+
82
+ # stops listening for changes
83
+ def stop
84
+ @listener&.stop
85
+ end
86
+
80
87
  def service_env
81
- (defined?(Rails) && Rails.environmnent) || ENV['SERVICE_ENV']
88
+ if defined?(Rails) && Rails.respond_to?(:env)
89
+ Rails.env
90
+ end || ENV['RAILS_ENV'] || ENV['SERVICE_ENV']
82
91
  end
83
92
 
84
93
  # Loads the most recent settings from disk
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ProcessSettings
4
- VERSION = '0.11.0.pre.2'
4
+ VERSION = '0.11.0.pre.7'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: process_settings
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0.pre.2
4
+ version: 0.11.0.pre.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Invoca