config_files 0.1.5 → 0.1.7

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
  SHA256:
3
- metadata.gz: f0a3001450205f4734271598f6b0cd51ca6aba8808434b734d031d3f7c7851b6
4
- data.tar.gz: d62a7f9bf5fc8e4f8a299b7fe9f8eba9f7f547917298a8e0e8b9c7d0944e15f1
3
+ metadata.gz: dabb2b8b5d0fb25738c2d55d02068fd4710f2085425b4236ad8b2da6b62a2167
4
+ data.tar.gz: b10790c4f63c114122a4ccd0aa2a31bbaf897ae22e926838af1ddc2363d65152
5
5
  SHA512:
6
- metadata.gz: 689ac43514f81720d263e6e5f707139b451a32703a5d361937626ce653f3c0494019aeed282d5b3e7e384e6b5a217dbd3f67d1927128a3cd12180148f32aef66
7
- data.tar.gz: '08c8db4aff8046683fafdfa71ef7cc4717a09b0165cac63a97a3ec660f6f344d0432c8823d7d662dddad221ea8202f83aef7d189cf06a70adc7729dc0aa86eaa'
6
+ metadata.gz: 742b8d8e6955a5c65dcaa5e62c789f9bd0acd24decc3957f7c58d22086d6ce16a25b29b68703ff98c769049350d7c9195deb7144391ca5d179454633de7db164
7
+ data.tar.gz: 623b886403b441802957faeebe5484a29b92fd9bd3b082e67c51270c6d53d5974b8ff0278699602bf2345861eb6c6788027a957677a19679e769a896b8d9ba3e
data/.gitignore CHANGED
@@ -1,3 +1,5 @@
1
- # Created by .ignore support plugin (hsz.mobi)
2
- .idea/
3
-
1
+ /.idea/.gitignore
2
+ /.idea/config_files.iml
3
+ /.idea/misc.xml
4
+ /.idea/modules.xml
5
+ /.idea/vcs.xml
@@ -1,3 +1,3 @@
1
1
  module ConfigFiles
2
- VERSION='0.1.5'
2
+ VERSION='0.1.7'
3
3
  end
data/lib/config_files.rb CHANGED
@@ -2,25 +2,34 @@ require 'config_files/file_factory'
2
2
  require 'config_files/loader_factory'
3
3
  require 'config_files/loaders'
4
4
  require 'config_files/version'
5
+ require 'active_support/core_ext/hash/indifferent_access'
5
6
  require 'active_support/core_ext/hash/deep_merge'
6
7
  require 'active_support/core_ext/object/blank'
7
8
 
8
9
  require 'meta'
9
10
  require 'yaml'
11
+
12
+ class NoDirectoryEntry < NoMethodError; end
10
13
  module ConfigFiles
11
14
 
12
15
  class << self
13
16
  def included(base)
14
17
  base.class_eval do
15
- extend ClassMethods
18
+ extend ConfigFilesClassMethods
16
19
  end
17
20
  end
18
21
  end
19
22
 
20
- module ClassMethods
23
+ module ConfigFilesClassMethods
21
24
  include Meta
22
25
  attr_accessor :directories
23
26
 
27
+ def self.extended(base)
28
+ base.instance_eval do
29
+ self.directories=default_directories
30
+ end
31
+ end
32
+
24
33
  def any_extension
25
34
  '*'
26
35
  end
@@ -29,8 +38,12 @@ module ConfigFiles
29
38
  :etc
30
39
  end
31
40
 
41
+ def default_directories
42
+ { :etc => ['config', 'etc', '/etc'] }
43
+ end
44
+
32
45
  def config_directories(*arr)
33
- self.directories||={ :etc => ['config', 'etc', '/etc'] }
46
+ self.directories||=default_directories
34
47
  arr.each do |directory_list|
35
48
  directory_list.each do |key, value|
36
49
  self.directories[key]=value.map { |dir| ::File.expand_path(dir) }
@@ -40,7 +53,7 @@ module ConfigFiles
40
53
  end
41
54
 
42
55
  def merged_hash(file)
43
- config_files(file).inject({}) { |master, file| master.deep_merge(FileFactory.(file)) }
56
+ config_files(file).inject(::HashWithIndifferentAccess.new) { |master, file| master.deep_merge(FileFactory.(file)) }
44
57
  end
45
58
 
46
59
  def build_combined(file)
@@ -68,7 +81,11 @@ module ConfigFiles
68
81
  end
69
82
 
70
83
  def first_directory(file, key=config_key)
71
- self.directories[key]&.detect { |directory| directory_listing(directory, file).presence } || ''
84
+ begin
85
+ self.directories[key]&.detect { |directory| directory_listing(directory, file).presence } || ''
86
+ rescue NoMethodError=>e
87
+ raise NoDirectoryEntry, "Unable to find #{key} in #{self.directories}"
88
+ end
72
89
  end
73
90
 
74
91
  def files(file, key=config_key)
@@ -3,12 +3,12 @@ require 'minitest/autorun'
3
3
  require 'config_files'
4
4
  class Dummy
5
5
  include ConfigFiles
6
- config_directories :etc => ['etc', 'nofiles/etc']
6
+ config_directories etc: ['test/etc', 'test/nofiles/etc']
7
7
  static_config_files :dummy, :broken
8
8
  end
9
9
 
10
10
  class Dummy2 < Dummy
11
- config_directories 'config' => ['etc', 'nofiles/etc']
11
+ config_directories config: ['test/etc', 'test/nofiles/etc']
12
12
  class << self
13
13
  def config_key
14
14
  "config"
@@ -16,6 +16,11 @@ class Dummy2 < Dummy
16
16
  end
17
17
  end
18
18
 
19
+ class Defaults
20
+ include ConfigFiles
21
+ static_config_files :dummy
22
+ end
23
+
19
24
  class ConfigFilesTest < MiniTest::Test
20
25
  def test_config_key
21
26
  assert_equal(:etc, Dummy.config_key)
@@ -44,4 +49,8 @@ class ConfigFilesTest < MiniTest::Test
44
49
  def test_yaml_and_config_override
45
50
  assert_equal('test', Dummy2.dummy[:config_test])
46
51
  end
52
+
53
+ def test_defaults_are_picked_up_when_no_directories_used
54
+ assert_equal(nil, Defaults.dummy[:config_test])
55
+ end
47
56
  end
data/test/etc/dummy.yml CHANGED
@@ -1,2 +1,2 @@
1
- :config_test: test
2
- :only_in_yaml: yaml_file
1
+ config_test: test
2
+ only_in_yaml: yaml_file
metadata CHANGED
@@ -1,11 +1,11 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: config_files
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul McKibbin
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2012-11-11 00:00:00.000000000 Z
@@ -70,7 +70,7 @@ homepage: https://github.com/blackrat/config_files
70
70
  licenses:
71
71
  - MIT
72
72
  metadata: {}
73
- post_install_message:
73
+ post_install_message:
74
74
  rdoc_options: []
75
75
  require_paths:
76
76
  - lib
@@ -85,8 +85,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
85
85
  - !ruby/object:Gem::Version
86
86
  version: '0'
87
87
  requirements: []
88
- rubygems_version: 3.1.2
89
- signing_key:
88
+ rubygems_version: 3.1.6
89
+ signing_key:
90
90
  specification_version: 4
91
91
  summary: ConfigFiles is a configuration file access tool. It parses multiple configuration
92
92
  files in multiple formats and presents a consistent block to the application with