config_files 0.1.0 → 0.1.6

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: 69666324c397bf59a18efef190d2660ce376143b246bda3752409af21fe1b51b
4
- data.tar.gz: 79c42d11ba5617e182e6b6cdb56074036c99f7bcd32fe0f5f0d0022b971f3194
3
+ metadata.gz: 0e601554ecea9bc4ad625f62936f005413b5cc13e76c25776a6abd1455dca6ff
4
+ data.tar.gz: 91b7f6eeb1e07b2646c3086d4ef008b91ee04d63fee1b7b6ccb9a73c8adfd67a
5
5
  SHA512:
6
- metadata.gz: e53a814869eaebf6ed6b6ecc55425dedbaca918434168720e96eed9812a84bce6b64f0818c5b751343b20ce4adc42d7d23ab3b01b857542443fb8da68a5a7eca
7
- data.tar.gz: 72ea7cc041cf8405429244a42c96a5a2f275de969b9fd183b62bca9423271847d38a43ae3970b23b64679643a3acdc26ff594c82a75456509c9a7a94cb76e830
6
+ metadata.gz: d086ca2975a90d9035a7e81eac2a7ddaadfcbd42ca61a3cb33fbde4675b42c226bfd181c48a9dcc6206f6fd6167e26b016af977fee61b2ab02d5bb132c67da53
7
+ data.tar.gz: 84211ae6ba278ebec36df53a7e0f7275b35430118b135ae6ecc5e73f3ad5ca02833691e4655e38f61f67857c62beb7a041189d3b00a3395e33526f96730c1520
data/Gemfile.lock ADDED
@@ -0,0 +1,34 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ config_files (0.1.5)
5
+ activesupport (>= 2.2.1)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ activesupport (6.0.3.3)
11
+ concurrent-ruby (~> 1.0, >= 1.0.2)
12
+ i18n (>= 0.7, < 2)
13
+ minitest (~> 5.1)
14
+ tzinfo (~> 1.1)
15
+ zeitwerk (~> 2.2, >= 2.2.2)
16
+ concurrent-ruby (1.1.7)
17
+ i18n (1.8.5)
18
+ concurrent-ruby (~> 1.0)
19
+ minitest (5.14.2)
20
+ rake (13.0.1)
21
+ thread_safe (0.3.6)
22
+ tzinfo (1.2.7)
23
+ thread_safe (~> 0.1)
24
+ zeitwerk (2.4.0)
25
+
26
+ PLATFORMS
27
+ ruby
28
+
29
+ DEPENDENCIES
30
+ config_files!
31
+ rake
32
+
33
+ BUNDLED WITH
34
+ 1.16.1
data/config_files.gemspec CHANGED
@@ -20,5 +20,6 @@ SUMMARY
20
20
  spec.license = 'MIT'
21
21
  spec.date = '2012-11-11'
22
22
 
23
- spec.add_dependency 'activesupport'
23
+ spec.add_runtime_dependency 'activesupport', '>=2.2.1'
24
+ spec.add_development_dependency 'rake'
24
25
  end
data/lib/config_files.rb CHANGED
@@ -3,23 +3,32 @@ require 'config_files/loader_factory'
3
3
  require 'config_files/loaders'
4
4
  require 'config_files/version'
5
5
  require 'active_support/core_ext/hash/deep_merge'
6
+ require 'active_support/core_ext/object/blank'
6
7
 
7
8
  require 'meta'
8
9
  require 'yaml'
10
+
11
+ class NoDirectoryEntry < NoMethodError; end
9
12
  module ConfigFiles
10
13
 
11
14
  class << self
12
15
  def included(base)
13
16
  base.class_eval do
14
- extend ClassMethods
17
+ extend ConfigFilesClassMethods
15
18
  end
16
19
  end
17
20
  end
18
21
 
19
- module ClassMethods
22
+ module ConfigFilesClassMethods
20
23
  include Meta
21
24
  attr_accessor :directories
22
25
 
26
+ def self.extended(base)
27
+ base.instance_eval do
28
+ self.directories=default_directories
29
+ end
30
+ end
31
+
23
32
  def any_extension
24
33
  '*'
25
34
  end
@@ -28,11 +37,15 @@ module ConfigFiles
28
37
  :etc
29
38
  end
30
39
 
40
+ def default_directories
41
+ { :etc => ['config', 'etc', '/etc'] }
42
+ end
43
+
31
44
  def config_directories(*arr)
32
- self.directories||={ :etc => ['etc', '/etc'] }
45
+ self.directories||=default_directories
33
46
  arr.each do |directory_list|
34
47
  directory_list.each do |key, value|
35
- self.directories[key]=value.map { |dir| File.expand_path(dir) }
48
+ self.directories[key]=value.map { |dir| ::File.expand_path(dir) }
36
49
  meta_def("#{key}_dir") { @directories[key] }
37
50
  end
38
51
  end
@@ -43,7 +56,7 @@ module ConfigFiles
43
56
  end
44
57
 
45
58
  def build_combined(file)
46
- JSON.parse(merged_hash(file).to_json, object_class: OpenStruct)
59
+ merged_hash(file)
47
60
  end
48
61
 
49
62
  def static_config_files(*arr)
@@ -62,12 +75,20 @@ module ConfigFiles
62
75
  alias_method :config_files, :dynamic_config_files
63
76
 
64
77
  private
78
+ def directory_listing(directory, file)
79
+ ::Dir.glob(::File.join(directory, "#{file}.*"))
80
+ end
81
+
65
82
  def first_directory(file, key=config_key)
66
- self.directories[key]&.detect { |directory| Dir.glob(File.join(directory, "#{file}.*")) } || (raise Errno::ENOENT, "No #{file}.* in #{self.directories[key]}")
83
+ begin
84
+ self.directories[key]&.detect { |directory| directory_listing(directory, file).presence } || ''
85
+ rescue NoMethodError=>e
86
+ raise NoDirectoryEntry, "Unable to find #{key} in #{self.directories}"
87
+ end
67
88
  end
68
89
 
69
90
  def files(file, key=config_key)
70
- Dir.glob(File.join(first_directory(file, key), "#{file}.*"))
91
+ directory_listing(first_directory(file, key), file)
71
92
  end
72
93
 
73
94
  def config_files(file, key=config_key)
@@ -8,7 +8,7 @@ module ConfigFiles
8
8
 
9
9
  public
10
10
  def call(file_name, options={})
11
- loader(file_name, options).(file_name, object_class: ::Hash)
11
+ loader(file_name, options).(file_name)
12
12
  end
13
13
  end
14
14
  end
@@ -4,8 +4,8 @@ module ConfigFiles
4
4
  module Loaders
5
5
  class Json
6
6
  class << self
7
- def call(file_name, object_class: ::OpenStruct)
8
- ::JSON.load(file_name, nil, {object_class: object_class})
7
+ def call(file_name, object_class: ::Hash)
8
+ ::JSON.load(::File.open(file_name), nil, {object_class: object_class, quirks_mode: true})
9
9
  end
10
10
  end
11
11
  end
@@ -2,8 +2,8 @@ module ConfigFiles
2
2
  module Loaders
3
3
  class Yaml
4
4
  class << self
5
- def call(file_name, object_class: OpenStruct)
6
- JSON.parse(::YAML.load_file(file_name).to_json, object_class: object_class)
5
+ def call(file_name)
6
+ ::YAML.load_file(file_name)
7
7
  end
8
8
  end
9
9
  end
@@ -1,3 +1,3 @@
1
1
  module ConfigFiles
2
- VERSION='0.1.0'
2
+ VERSION='0.1.6'
3
3
  end
@@ -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)
@@ -38,10 +43,14 @@ class ConfigFilesTest < MiniTest::Test
38
43
  end
39
44
 
40
45
  def test_empty_for_missing_files
41
- assert_equal({}, Dummy.broken.to_h)
46
+ assert_equal({}, Dummy.broken)
42
47
  end
43
48
 
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('test', Defaults.dummy[:config_test])
55
+ end
47
56
  end
@@ -0,0 +1,13 @@
1
+ {
2
+ "testId": "123123-323-radasd",
3
+ "testTitle": "string",
4
+ "testNest": [
5
+ {
6
+ "hash": {
7
+ "innerId": "27811a4c-9cb5-4e6d-a069-5c19288fae58",
8
+ "personGivenName": "Paul",
9
+ "personFamilyName": "Mak"
10
+ }
11
+ }
12
+ ]
13
+ }
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.0
4
+ version: 0.1.6
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
@@ -16,9 +16,23 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 2.2.1
20
20
  type: :runtime
21
21
  prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 2.2.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
22
36
  version_requirements: !ruby/object:Gem::Requirement
23
37
  requirements:
24
38
  - - ">="
@@ -34,6 +48,7 @@ extra_rdoc_files: []
34
48
  files:
35
49
  - ".gitignore"
36
50
  - Gemfile
51
+ - Gemfile.lock
37
52
  - LICENCE.txt
38
53
  - README.md
39
54
  - Rakefile
@@ -49,13 +64,14 @@ files:
49
64
  - lib/meta.rb
50
65
  - test/config_files_test.rb
51
66
  - test/etc/dummy.conf
67
+ - test/etc/dummy.json
52
68
  - test/etc/dummy.yml
53
69
  - test/loader_factory_test.rb
54
70
  homepage: https://github.com/blackrat/config_files
55
71
  licenses:
56
72
  - MIT
57
73
  metadata: {}
58
- post_install_message:
74
+ post_install_message:
59
75
  rdoc_options: []
60
76
  require_paths:
61
77
  - lib
@@ -70,9 +86,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
70
86
  - !ruby/object:Gem::Version
71
87
  version: '0'
72
88
  requirements: []
73
- rubyforge_project:
74
- rubygems_version: 2.7.6
75
- signing_key:
89
+ rubygems_version: 3.1.4
90
+ signing_key:
76
91
  specification_version: 4
77
92
  summary: ConfigFiles is a configuration file access tool. It parses multiple configuration
78
93
  files in multiple formats and presents a consistent block to the application with
@@ -80,5 +95,6 @@ summary: ConfigFiles is a configuration file access tool. It parses multiple con
80
95
  test_files:
81
96
  - test/config_files_test.rb
82
97
  - test/etc/dummy.conf
98
+ - test/etc/dummy.json
83
99
  - test/etc/dummy.yml
84
100
  - test/loader_factory_test.rb