config_reader 1.0.5 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3fa20c036bed02f5864bb5fdaebbd2f0ecce3315
4
- data.tar.gz: cea79cb4e8a5b14456f64d3988fe2f9274f36099
3
+ metadata.gz: c70acd1692b08bdedb8f5f0ed7647cdbecda42d7
4
+ data.tar.gz: 852b2bddd711ab21984d0049701e38e83295d3f8
5
5
  SHA512:
6
- metadata.gz: 69f491dc61461f6d7415b65f3cf1d3ec22b64f950bd9ed996ffcbcb173c2de78e61afa87c6bdd1af1021f39bec8c0b792cd27f483c85c936ab00fd7c57055e10
7
- data.tar.gz: 9bd67ba76fc575145621f4f0f274384e3fa7fef06f913876b11b3176400a9d043ace8559f55aae5b30222042ac86f30708dcf25be334955184b744963ed0f183
6
+ metadata.gz: 81654334867c8598084c0b66bdbd27abf9af5c4970c049b5b898da732509e1badb07fbebb53721422ce04caacecaa61ebb478b834327390138ab691d6a1c7f1a
7
+ data.tar.gz: 1cdb20047b97d4162bc966f2afa7e1235fe80198671bf0509da480ad33da712e50fc1db8a3c5d4f2d20924cbe15af53ba22335d01360a1091c8f6a46e3b2f844
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- config_reader (1.0.5)
4
+ config_reader (2.0.0)
5
5
  deep_merge
6
6
 
7
7
  GEM
@@ -10,17 +10,17 @@ GEM
10
10
  arrayfields (4.9.2)
11
11
  chronic (0.10.2)
12
12
  coderay (1.1.0)
13
- coerce (0.0.6)
13
+ coerce (0.0.8)
14
14
  chronic (>= 0.6.2)
15
15
  deep_merge (1.1.1)
16
- fattr (2.2.2)
17
- highline (1.6.21)
18
- main (6.0.0)
19
- arrayfields (>= 4.7.4)
20
- chronic (>= 0.6.2)
21
- fattr (>= 2.2.0)
22
- map (>= 5.1.0)
23
- map (6.5.3)
16
+ fattr (2.3.0)
17
+ highline (1.7.10)
18
+ main (6.2.2)
19
+ arrayfields (~> 4.7, >= 4.7.4)
20
+ chronic (~> 0.6, >= 0.6.2)
21
+ fattr (~> 2.2, >= 2.2.0)
22
+ map (~> 6.1, >= 6.1.0)
23
+ map (6.6.0)
24
24
  method_source (0.8.2)
25
25
  pry (0.9.12.6)
26
26
  coderay (~> 1.0)
@@ -28,12 +28,12 @@ GEM
28
28
  slop (~> 3.4)
29
29
  rake (0.9.2.2)
30
30
  rspec (1.3.2)
31
- sekrets (1.7.0)
32
- coerce (>= 0.0.3)
33
- fattr (>= 2.2.1)
34
- highline (>= 1.6.15)
35
- main (>= 5.1.1)
36
- map (>= 6.3.0)
31
+ sekrets (1.10.0)
32
+ coerce (~> 0.0.3)
33
+ fattr (~> 2.2)
34
+ highline (~> 1.6)
35
+ main (~> 6.1)
36
+ map (~> 6.3)
37
37
  slop (3.5.0)
38
38
 
39
39
  PLATFORMS
@@ -44,7 +44,7 @@ DEPENDENCIES
44
44
  pry
45
45
  rake
46
46
  rspec (= 1.3.2)
47
- sekrets (~> 1.7.0)
47
+ sekrets (~> 1)
48
48
 
49
49
  BUNDLED WITH
50
50
  1.16.1
data/README.rdoc CHANGED
@@ -21,35 +21,28 @@ Example config file:
21
21
  test:
22
22
  blackbird: false
23
23
 
24
- Example class:
25
-
26
- class MyConfig < ConfigReader
27
- self.config_file = 'config/my_config.yml'
28
- end
29
-
30
- don't throw errors on missing keys
31
-
32
- class MyConfig < ConfigReader
33
- self.config_file = 'config/my_config.yml'
34
- self.ignore_missing_keys = true
35
- end
36
-
37
24
  == Sekrets
38
- Now also includes Sekrets integration. https://github.com/ahoward/sekrets
25
+
26
+ Includes Sekrets integration. See https://github.com/ahoward/sekrets for more information.
39
27
 
40
28
  The format of the sekrets file is the same as the regular file.
41
29
 
42
- Example class with Sekrets:
30
+ == Setup
43
31
 
44
32
  class MyConfig < ConfigReader
45
- self.config_file = 'config/my_config.yml'
46
- self.sekrets_file = 'config/my_config.yml.enc'
33
+ configure do |config|
34
+ config.environment = Rails.env # (set this however you access the env in your app)
35
+ config.config_file = 'config/my_config.yml'
36
+ config.sekrets_file = 'config/my_config.yml.enc' # (default nil)
37
+ config.ignore_missing_keys = true # (default false, raises KeyError)
38
+ end
47
39
  end
48
40
 
49
- Usage:
41
+ == Usage
50
42
 
51
43
  MyConfig.mail_from #=> noreply@example.com
52
44
  MyConfig[:mail_from] #=> noreply@example.com
45
+ MyConfig['mail_from'] #=> noreply@example.com
53
46
 
54
47
  == Note on Patches/Pull Requests
55
48
 
@@ -63,4 +56,4 @@ Usage:
63
56
 
64
57
  == Copyright
65
58
 
66
- Copyright (c) 2008 Michael Moen. See LICENSE for details.
59
+ Copyright (c) 2008-2018 Michael Moen. See LICENSE for details.
@@ -23,6 +23,8 @@ Gem::Specification.new do |s|
23
23
 
24
24
  s.add_development_dependency 'rake'
25
25
  s.add_development_dependency 'rspec', '1.3.2'
26
- s.add_development_dependency 'sekrets', '~> 1.7.0'
26
+ s.add_development_dependency 'sekrets', '~> 1'
27
27
  s.add_development_dependency 'pry'
28
+
29
+ s.post_install_message = "If you are are upgrading from a pre 2.x version, please see the configuration changes in the README https://github.com/UnderpantsGnome/config_reader-gem/blob/master/README.rdoc"
28
30
  end
data/lib/config_reader.rb CHANGED
@@ -1,5 +1,5 @@
1
- require "config_reader/version"
2
- require "config_reader/magic_hash"
1
+ require 'config_reader/version'
2
+ require 'config_reader/magic_hash'
3
3
  require 'yaml'
4
4
  require 'deep_merge'
5
5
 
@@ -11,23 +11,15 @@ end
11
11
 
12
12
  class ConfigReader
13
13
  class << self
14
- attr_accessor :config_file, :config, :sekrets_file, :ignore_missing_keys
14
+ attr_accessor :configuration
15
15
 
16
16
  def config
17
17
  @config = nil unless defined?(@config)
18
18
  @config ||= reload
19
19
  end
20
20
 
21
- def config_file=(file)
22
- @config_file = file
23
- end
24
-
25
- def ignore_missing_keys=(bool)
26
- @ignore_missing_keys = bool
27
- end
28
-
29
21
  def reload
30
- merge_configs(find_env, load_config, load_sekrets)
22
+ merge_configs(load_config, load_sekrets)
31
23
  end
32
24
 
33
25
  def [](key)
@@ -35,14 +27,14 @@ class ConfigReader
35
27
  end
36
28
 
37
29
  def find_config
38
- return @config_file if File.exist?(@config_file)
30
+ return configuration.config_file if File.exist?(configuration.config_file)
39
31
 
40
32
  %w( . config ).each do |dir|
41
- config_file = File.join(dir, @config_file)
33
+ config_file = File.join(dir, configuration.config_file)
42
34
  return config_file if File.exist?(config_file)
43
35
  end
44
36
 
45
- ''
37
+ nil
46
38
  end
47
39
 
48
40
  def method_missing(key, *args, &block)
@@ -57,24 +49,6 @@ class ConfigReader
57
49
  puts config.inspect
58
50
  end
59
51
 
60
- def find_env
61
- if defined?(Rails) && Rails.respond_to?(:stage)
62
- Rails.stage
63
- elsif defined?(Rails) && Rails.env
64
- Rails.env
65
- elsif defined?(RAILS_ENV)
66
- RAILS_ENV
67
- elsif defined?(Padrino) && Padrino.env
68
- Padrino.env.to_s
69
- elsif defined?(PADRINO_ENV)
70
- PADRINO_ENV
71
- elsif ENV['RACK_ENV']
72
- ENV['RACK_ENV']
73
- elsif defined?(APP_ENV)
74
- APP_ENV
75
- end
76
- end
77
-
78
52
  def load_config
79
53
  raise 'No config file set' unless find_config
80
54
 
@@ -92,10 +66,10 @@ class ConfigReader
92
66
  def load_sekrets
93
67
  sekrets = {}
94
68
 
95
- if @sekrets_file
69
+ if configuration.sekrets_file
96
70
  begin
97
71
  require 'sekrets'
98
- sekrets = ::Sekrets.settings_for(@sekrets_file)
72
+ sekrets = ::Sekrets.settings_for(configuration.sekrets_file)
99
73
  raise 'No sekrets found' unless sekrets
100
74
  rescue LoadError
101
75
  $stderr.puts "You specified a sekrets_file, but the sekrets gem isn't available."
@@ -105,12 +79,37 @@ class ConfigReader
105
79
  sekrets
106
80
  end
107
81
 
108
- def merge_configs(env, conf, sekrets)
82
+ def merge_configs(conf, sekrets)
83
+ env = configuration.environment
84
+
109
85
  _conf = conf['defaults']
110
86
  _conf.deep_merge!(sekrets['defaults']) if sekrets && sekrets['defaults']
111
87
  _conf.deep_merge!(conf[env]) if conf[env]
112
88
  _conf.deep_merge!(sekrets[env]) if sekrets && sekrets[env]
113
- ConfigReader::MagicHash.convert_hash(_conf, @ignore_missing_keys)
89
+
90
+ MagicHash.convert_hash(_conf, configuration.ignore_missing_keys)
114
91
  end
92
+
93
+ def configure
94
+ self.configuration ||= Configuration.new
95
+ yield(configuration)
96
+ end
97
+
98
+ def configuration
99
+ @configuration ||= Configuration.new
100
+ end
101
+
115
102
  end
103
+
104
+ class Configuration
105
+ attr_accessor :config_file, :sekrets_file, :ignore_missing_keys, :environment
106
+
107
+ def initialize
108
+ @config_file = nil
109
+ @sekrets_file = nil
110
+ @ignore_missing_keys = false
111
+ @environment = nil
112
+ end
113
+ end
114
+
116
115
  end
@@ -1,3 +1,3 @@
1
1
  class ConfigReader
2
- VERSION = "1.0.5"
2
+ VERSION = "2.0.0"
3
3
  end
@@ -1,4 +1,7 @@
1
1
  class NoKeyNoErrorConfig < ConfigReader
2
- self.config_file = 'spec/test_config.yml'
3
- self.ignore_missing_keys = true
2
+ configure do |config|
3
+ config.environment = 'test'
4
+ config.config_file = 'spec/test_config.yml'
5
+ config.ignore_missing_keys = true
6
+ end
4
7
  end
@@ -1,4 +1,7 @@
1
1
  class SekretsConfig < ConfigReader
2
- self.config_file = 'spec/test_config.yml'
3
- self.sekrets_file = 'spec/sekrets_config.yml.enc'
2
+ configure do |config|
3
+ config.environment = 'test'
4
+ config.config_file = 'spec/test_config.yml'
5
+ config.sekrets_file = 'spec/sekrets_config.yml.enc'
6
+ end
4
7
  end
data/spec/test_config.rb CHANGED
@@ -1,3 +1,6 @@
1
1
  class TestConfig < ConfigReader
2
- self.config_file = 'spec/test_config.yml'
3
- end
2
+ configure do |config|
3
+ config.environment = 'test'
4
+ config.config_file = 'spec/test_config.yml'
5
+ end
6
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: config_reader
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Moen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-01 00:00:00.000000000 Z
11
+ date: 2018-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: deep_merge
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 1.7.0
61
+ version: '1'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 1.7.0
68
+ version: '1'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: pry
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -109,7 +109,8 @@ files:
109
109
  homepage: https://github.com/UnderpantsGnome/config_reader-gem
110
110
  licenses: []
111
111
  metadata: {}
112
- post_install_message:
112
+ post_install_message: If you are are upgrading from a pre 2.x version, please see
113
+ the configuration changes in the README https://github.com/UnderpantsGnome/config_reader-gem/blob/master/README.rdoc
113
114
  rdoc_options: []
114
115
  require_paths:
115
116
  - lib
@@ -125,7 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
125
126
  version: '0'
126
127
  requirements: []
127
128
  rubyforge_project: config_reader
128
- rubygems_version: 2.4.5.1
129
+ rubygems_version: 2.6.13
129
130
  signing_key:
130
131
  specification_version: 4
131
132
  summary: Provides a way to manage environment specific configuration settings.