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 +4 -4
- data/.gitignore +5 -3
- data/lib/config_files/version.rb +1 -1
- data/lib/config_files.rb +22 -5
- data/test/config_files_test.rb +11 -2
- data/test/etc/dummy.yml +2 -2
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dabb2b8b5d0fb25738c2d55d02068fd4710f2085425b4236ad8b2da6b62a2167
|
4
|
+
data.tar.gz: b10790c4f63c114122a4ccd0aa2a31bbaf897ae22e926838af1ddc2363d65152
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 742b8d8e6955a5c65dcaa5e62c789f9bd0acd24decc3957f7c58d22086d6ce16a25b29b68703ff98c769049350d7c9195deb7144391ca5d179454633de7db164
|
7
|
+
data.tar.gz: 623b886403b441802957faeebe5484a29b92fd9bd3b082e67c51270c6d53d5974b8ff0278699602bf2345861eb6c6788027a957677a19679e769a896b8d9ba3e
|
data/.gitignore
CHANGED
data/lib/config_files/version.rb
CHANGED
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
|
18
|
+
extend ConfigFilesClassMethods
|
16
19
|
end
|
17
20
|
end
|
18
21
|
end
|
19
22
|
|
20
|
-
module
|
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||=
|
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(
|
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
|
-
|
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)
|
data/test/config_files_test.rb
CHANGED
@@ -3,12 +3,12 @@ require 'minitest/autorun'
|
|
3
3
|
require 'config_files'
|
4
4
|
class Dummy
|
5
5
|
include ConfigFiles
|
6
|
-
config_directories :
|
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
|
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
|
-
|
2
|
-
|
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.
|
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.
|
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
|