eac_config 0.4.0 → 0.5.3

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: fecd4e56674406cf96275edc74b51ee0c908076bf3f991f079ee439a7fd98606
4
- data.tar.gz: 33ed9a3d05488a9d06919589432727d6a9e72430234c05bb89e1119ea6b4c05f
3
+ metadata.gz: 7f130e01595ad39a2e0b0f6fb1ece9f21f8d61eaaa434746837478d60e825dc5
4
+ data.tar.gz: 660bed3f2ed1991fba8be9818e05f0263df90190c6c857695ba02b2283630e60
5
5
  SHA512:
6
- metadata.gz: cdd3b1bfe2d2e8dce429aa34dde375120f13796106c9145b8abcdfc6cbbb42187f1cf3504e1ec5027aa28afe437311c82fe1b1bf77b0aed195148ea9c57ba60a
7
- data.tar.gz: 37807d3bfeae842fb0f43a58cb2f90f1851cee1bd1802437a23cad122c6ab2d5cad896a4125aa45b3da73098863611d9e9575fdd5241d7ce67143bcb9ccbc97a
6
+ metadata.gz: f0cdc6364af4f758d3cb3c94b10bdadbc2124cfc1a0c2990e119be4df95b90c70ffd1d09fb17bc5ee4f5726b09499361b3f8f82d4f6b6544f7d8f58e8e38ff45
7
+ data.tar.gz: 58c59eecee35069c78de153071a281f6e04914a12b3948b67b35e57b861cb101f8f419126c5c3c27432ef4ca055a8b509ec7d96bc9c030cfc08cf80bd8cd9a54
@@ -7,9 +7,16 @@ require 'eac_config/load_nodes_search'
7
7
  require 'eac_config/node_entry'
8
8
  require 'eac_config/node_uri'
9
9
  require 'eac_ruby_utils/core_ext'
10
+ require 'eac_ruby_utils/context'
10
11
 
11
12
  module EacConfig
12
13
  module Node
14
+ class << self
15
+ def context
16
+ @context ||= ::EacRubyUtils::Context.new
17
+ end
18
+ end
19
+
13
20
  attr_accessor :write_node
14
21
 
15
22
  common_concern do
@@ -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,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'eac_config/envvars_node'
5
+
6
+ module EacConfig
7
+ module Rspec
8
+ module Setup
9
+ def self.extended(obj)
10
+ obj.rspec_config.around do |example|
11
+ obj.on_envvars_load_path_clean(example)
12
+ end
13
+ end
14
+
15
+ def on_envvars_load_path_clean(example)
16
+ old_value = envvars_load_path_entry.value
17
+ begin
18
+ envvars_load_path_entry.value = old_value = []
19
+ example.run
20
+ ensure
21
+ envvars_load_path_entry.value = old_value
22
+ end
23
+ end
24
+
25
+ def envvars_load_path_entry
26
+ ::EacConfig::EnvvarsNode.new.load_path.entry
27
+ end
28
+ end
29
+ end
30
+ 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.4.0'
4
+ VERSION = '0.5.3'
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.4.0
4
+ version: 0.5.3
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-01 00:00:00.000000000 Z
11
+ date: 2021-12-06 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.