config_reader 1.0.5 → 2.0.0

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
  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.