eac_config 0.5.0 → 0.6.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
  SHA256:
3
- metadata.gz: feff3824330eb08ebf9bbfabc71d667daf854fa32843459af48d6b23c1fe2071
4
- data.tar.gz: fcc142b1fbe378352dfb3925a4a84480d15f13307d47cbc250ff0ae7c187d362
3
+ metadata.gz: 8ac2dc8e897b518ae3ff7c683d486380fa6cf76ad835a718e01436f4dbc4571d
4
+ data.tar.gz: 7dbefbb66b1912343c4e2e5b529828dea1f1d5165fea20e390ede6de4d7ea3d7
5
5
  SHA512:
6
- metadata.gz: 03e62f397f4ba9a412742b0a90384814a0a81bb5f402885468de79f758a6719d6a0723716d0d6075ec8a01c5d654242bb8657f29939c3bc9b4f18e1a69222f4c
7
- data.tar.gz: 5983f6b699f60a3006de7015c01308b5371410884ac2d66f93004c2a4d5b82063bbc92080ee8a6e03374a7c1bd31e3870baa05f0e7a71806b27c786c47642f66
6
+ metadata.gz: 5048086be008f75628f187fc588a804a41ac6903f97d8ea60f3ca07e930d823e24d5193a14fbccde27b6a8ff2e328417e2a8cc2bd45960f268031557ac5cd566
7
+ data.tar.gz: 9fe7946dcb40890a213fba6fab0af3bda15456e00b277f1eb578f69ec6f62d45c0fced3139ea61afadfe491b8bf504ed526ab36ff5298aac29ec75c2798280a4
@@ -49,6 +49,13 @@ module EacConfig
49
49
 
50
50
  delegate :to_h, to: :root
51
51
 
52
+ # @return [EacConfig::PathsHash
53
+ def write(entry_key, entry_value)
54
+ self[entry_key] = entry_value
55
+
56
+ self
57
+ end
58
+
52
59
  private
53
60
 
54
61
  attr_reader :data
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'eac_ruby_utils/fs/temp'
5
+ require 'eac_config/envvars_node'
6
+ require 'eac_config/node'
7
+ require 'eac_config/yaml_file_node'
8
+
9
+ module EacConfig
10
+ module Rspec
11
+ module Setup
12
+ def self.extended(obj)
13
+ obj.rspec_config.around do |example|
14
+ obj.on_envvars_load_path_clean(example)
15
+ end
16
+ end
17
+
18
+ def on_envvars_load_path_clean(example)
19
+ old_value = envvars_load_path_entry.value
20
+ begin
21
+ envvars_load_path_entry.value = old_value = []
22
+ example.run
23
+ ensure
24
+ envvars_load_path_entry.value = old_value
25
+ end
26
+ end
27
+
28
+ def envvars_load_path_entry
29
+ ::EacConfig::EnvvarsNode.new.load_path.entry
30
+ end
31
+
32
+ def stub_eac_config_node(&node_builder)
33
+ parent_self = self
34
+ rspec_config.around do |example|
35
+ ::EacRubyUtils::Fs::Temp.on_file do |file|
36
+ ::EacConfig::Node
37
+ .context.on(parent_self.stub_eac_config_node_build(file, &node_builder)) do
38
+ example.run
39
+ end
40
+ end
41
+ end
42
+ end
43
+
44
+ def stub_eac_config_node_build(file, &node_builder)
45
+ node_builder.present? ? node_builder.call(file) : ::EacConfig::YamlFileNode.new(file)
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_exts'
4
+
5
+ module EacConfig
6
+ module Rspec
7
+ require_sub __FILE__
8
+ end
9
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacConfig
4
- VERSION = '0.5.0'
4
+ VERSION = '0.6.0'
5
5
  end
@@ -18,14 +18,13 @@ module EacConfig
18
18
  end
19
19
 
20
20
  def value=(a_value)
21
- paths_hash[to_paths_hash_key] = a_value
22
- node.persist_data(paths_hash.root.to_h)
21
+ node.persist_data(paths_hash.write(to_paths_hash_key, a_value).root.to_h)
23
22
  end
24
23
 
25
24
  private
26
25
 
27
26
  # @return [EacConfig::PathsHash]
28
- def paths_hash_uncached
27
+ def paths_hash
29
28
  ::EacConfig::PathsHash.new(node.data)
30
29
  end
31
30
 
@@ -9,6 +9,7 @@ module EacConfig
9
9
  class YamlFileNode
10
10
  require_sub __FILE__
11
11
  include ::EacConfig::Node
12
+ enable_simple_cache
12
13
 
13
14
  class << self
14
15
  def from_uri(uri)
@@ -20,14 +21,10 @@ module EacConfig
20
21
  self.path = path.to_pathname
21
22
  end
22
23
 
23
- def data
24
- @data ||= ::EacRubyUtils::Yaml.load_file(assert_path) || {}
25
- end
26
-
27
24
  def persist_data(new_data)
28
25
  path.parent.mkpath
29
26
  ::EacRubyUtils::Yaml.dump_file(path, new_data)
30
- @data = nil
27
+ reset_cache(:data)
31
28
  end
32
29
 
33
30
  def url
@@ -36,13 +33,15 @@ module EacConfig
36
33
 
37
34
  private
38
35
 
39
- def assert_path
40
- unless path.file?
41
- raise("\"#{path}\" is a not a file") if path.exist?
42
-
43
- persist_data({})
36
+ def data_uncached
37
+ r = nil
38
+ if path.file?
39
+ r = ::EacRubyUtils::Yaml.load_file(path)
40
+ elsif path.exist?
41
+ raise("\"#{path}\" is a not a file")
44
42
  end
45
- path
43
+
44
+ r.is_a?(::Hash) ? r : {}
46
45
  end
47
46
  end
48
47
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eac_config
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Put here the authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-27 00:00:00.000000000 Z
11
+ date: 2021-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -30,28 +30,28 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.64'
33
+ version: '0.81'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0.64'
40
+ version: '0.81'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: eac_ruby_gem_support
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0.2'
47
+ version: '0.3'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0.2'
54
+ version: '0.3'
55
55
  description:
56
56
  email:
57
57
  executables: []
@@ -75,6 +75,8 @@ files:
75
75
  - lib/eac_config/paths_hash/entry_key_error.rb
76
76
  - lib/eac_config/paths_hash/node.rb
77
77
  - lib/eac_config/paths_hash/path_search.rb
78
+ - lib/eac_config/rspec.rb
79
+ - lib/eac_config/rspec/setup.rb
78
80
  - lib/eac_config/version.rb
79
81
  - lib/eac_config/yaml_file_node.rb
80
82
  - lib/eac_config/yaml_file_node/entry.rb
@@ -96,7 +98,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
96
98
  - !ruby/object:Gem::Version
97
99
  version: '0'
98
100
  requirements: []
99
- rubygems_version: 3.0.9
101
+ rubygems_version: 3.1.6
100
102
  signing_key:
101
103
  specification_version: 4
102
104
  summary: Put here de description.