config_files 0.1.5 → 0.1.6

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
  SHA256:
3
- metadata.gz: f0a3001450205f4734271598f6b0cd51ca6aba8808434b734d031d3f7c7851b6
4
- data.tar.gz: d62a7f9bf5fc8e4f8a299b7fe9f8eba9f7f547917298a8e0e8b9c7d0944e15f1
3
+ metadata.gz: 0e601554ecea9bc4ad625f62936f005413b5cc13e76c25776a6abd1455dca6ff
4
+ data.tar.gz: 91b7f6eeb1e07b2646c3086d4ef008b91ee04d63fee1b7b6ccb9a73c8adfd67a
5
5
  SHA512:
6
- metadata.gz: 689ac43514f81720d263e6e5f707139b451a32703a5d361937626ce653f3c0494019aeed282d5b3e7e384e6b5a217dbd3f67d1927128a3cd12180148f32aef66
7
- data.tar.gz: '08c8db4aff8046683fafdfa71ef7cc4717a09b0165cac63a97a3ec660f6f344d0432c8823d7d662dddad221ea8202f83aef7d189cf06a70adc7729dc0aa86eaa'
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/lib/config_files.rb CHANGED
@@ -7,20 +7,28 @@ require 'active_support/core_ext/object/blank'
7
7
 
8
8
  require 'meta'
9
9
  require 'yaml'
10
+
11
+ class NoDirectoryEntry < NoMethodError; end
10
12
  module ConfigFiles
11
13
 
12
14
  class << self
13
15
  def included(base)
14
16
  base.class_eval do
15
- extend ClassMethods
17
+ extend ConfigFilesClassMethods
16
18
  end
17
19
  end
18
20
  end
19
21
 
20
- module ClassMethods
22
+ module ConfigFilesClassMethods
21
23
  include Meta
22
24
  attr_accessor :directories
23
25
 
26
+ def self.extended(base)
27
+ base.instance_eval do
28
+ self.directories=default_directories
29
+ end
30
+ end
31
+
24
32
  def any_extension
25
33
  '*'
26
34
  end
@@ -29,8 +37,12 @@ module ConfigFiles
29
37
  :etc
30
38
  end
31
39
 
40
+ def default_directories
41
+ { :etc => ['config', 'etc', '/etc'] }
42
+ end
43
+
32
44
  def config_directories(*arr)
33
- self.directories||={ :etc => ['config', 'etc', '/etc'] }
45
+ self.directories||=default_directories
34
46
  arr.each do |directory_list|
35
47
  directory_list.each do |key, value|
36
48
  self.directories[key]=value.map { |dir| ::File.expand_path(dir) }
@@ -68,7 +80,11 @@ module ConfigFiles
68
80
  end
69
81
 
70
82
  def first_directory(file, key=config_key)
71
- self.directories[key]&.detect { |directory| directory_listing(directory, file).presence } || ''
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
72
88
  end
73
89
 
74
90
  def files(file, key=config_key)
@@ -1,3 +1,3 @@
1
1
  module ConfigFiles
2
- VERSION='0.1.5'
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)
@@ -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('test', Defaults.dummy[:config_test])
55
+ end
47
56
  end
metadata CHANGED
@@ -1,7 +1,7 @@
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.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul McKibbin
@@ -48,6 +48,7 @@ extra_rdoc_files: []
48
48
  files:
49
49
  - ".gitignore"
50
50
  - Gemfile
51
+ - Gemfile.lock
51
52
  - LICENCE.txt
52
53
  - README.md
53
54
  - Rakefile
@@ -85,7 +86,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
85
86
  - !ruby/object:Gem::Version
86
87
  version: '0'
87
88
  requirements: []
88
- rubygems_version: 3.1.2
89
+ rubygems_version: 3.1.4
89
90
  signing_key:
90
91
  specification_version: 4
91
92
  summary: ConfigFiles is a configuration file access tool. It parses multiple configuration