smart_initializer 0.9.1 → 0.11.0

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.
@@ -2,6 +2,7 @@
2
2
 
3
3
  # @api private
4
4
  # @since 0.1.0
5
+ # @version 0.10.0
5
6
  class SmartCore::Initializer::TypeSystem::Registry
6
7
  # @since 0.1.0
7
8
  include Enumerable
@@ -10,9 +11,10 @@ class SmartCore::Initializer::TypeSystem::Registry
10
11
  #
11
12
  # @api private
12
13
  # @since 0.1.0
14
+ # @version 0.10.0
13
15
  def initialize
14
16
  @systems = {}
15
- @lock = SmartCore::Engine::Lock.new
17
+ @lock = SmartCore::Engine::ReadWriteLock.new
16
18
  end
17
19
 
18
20
  # @param system_identifier [String, Symbol]
@@ -21,8 +23,9 @@ class SmartCore::Initializer::TypeSystem::Registry
21
23
  #
22
24
  # @api private
23
25
  # @since 0.1.0
26
+ # @version 0.10.0
24
27
  def register(system_identifier, interop_klass)
25
- thread_safe { apply(system_identifier, interop_klass) }
28
+ @lock.write_sync { apply(system_identifier, interop_klass) }
26
29
  end
27
30
 
28
31
  # @param system_identifier [String, Symbol]
@@ -30,24 +33,27 @@ class SmartCore::Initializer::TypeSystem::Registry
30
33
  #
31
34
  # @api private
32
35
  # @since 0.1.0
36
+ # @version 0.10.0
33
37
  def resolve(system_identifier)
34
- thread_safe { fetch(system_identifier) }
38
+ @lock.read_sync { fetch(system_identifier) }
35
39
  end
36
40
 
37
41
  # @return [Array<String>]
38
42
  #
39
43
  # @api private
40
44
  # @since 0.1.0
45
+ # @version 0.10.0
41
46
  def names
42
- thread_safe { system_names }
47
+ @lock.read_sync { system_names }
43
48
  end
44
49
 
45
50
  # @return [Array<Class<SmartCore::Initializer::TypeSystem::Interop>>]
46
51
  #
47
52
  # @api private
48
53
  # @since 0.1.0
54
+ # @version 0.10.0
49
55
  def interops
50
- thread_safe { system_interops }
56
+ @lock.read_sync { system_interops }
51
57
  end
52
58
 
53
59
  # @param block [Block]
@@ -58,16 +64,18 @@ class SmartCore::Initializer::TypeSystem::Registry
58
64
  #
59
65
  # @api private
60
66
  # @since 0.1.0
67
+ # @version 0.10.0
61
68
  def each(&block)
62
- thread_safe { iterate(&block) }
69
+ @lock.read_sync { iterate(&block) }
63
70
  end
64
71
 
65
72
  # @return [Hash<String,Class<SmartCore::Initializer::TypeSystem::Interop>]
66
73
  #
67
74
  # @api private
68
75
  # @since 0.1.0
76
+ # @version 0.10.0
69
77
  def to_h
70
- thread_safe { systems.dup }
78
+ @lock.write_sync { systems.dup }
71
79
  end
72
80
  alias_method :to_hash, :to_h
73
81
 
@@ -126,17 +134,16 @@ class SmartCore::Initializer::TypeSystem::Registry
126
134
  #
127
135
  # @api private
128
136
  # @since 0.1.0
129
- # @version 0.8.0
137
+ # @version 0.10.0
130
138
  def fetch(system_identifier)
131
139
  identifier = indifferently_accessible_identifier(system_identifier)
132
140
 
133
- begin
134
- systems.fetch(identifier)
135
- rescue ::KeyError
136
- raise(SmartCore::Initializer::UnsupportedTypeSystemError, <<~ERROR_MESSAGE)
137
- `#{identifier}` type system is not supported.
138
- ERROR_MESSAGE
139
- end
141
+ raise(
142
+ SmartCore::Initializer::UnsupportedTypeSystemError,
143
+ "`#{identifier}` type system is not supported."
144
+ ) unless systems.key?(identifier)
145
+
146
+ systems.fetch(identifier)
140
147
  end
141
148
 
142
149
  # @param interop_klass [Class<SMartCore::Initializer::TypeSystem::Interop>]
@@ -163,13 +170,4 @@ class SmartCore::Initializer::TypeSystem::Registry
163
170
  def indifferently_accessible_identifier(system_identifier)
164
171
  system_identifier.to_s.clone.tap(&:freeze)
165
172
  end
166
-
167
- # @param block [Block]
168
- # @return [Any]
169
- #
170
- # @api private
171
- # @since 0.1.0
172
- def thread_safe(&block)
173
- @lock.synchronize(&block)
174
- end
175
173
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  # @api private
4
4
  # @since 0.1.0
5
+ # @version 0.10.0
5
6
  module SmartCore::Initializer::TypeSystem::RegistryInterface
6
7
  class << self
7
8
  # @param base_module [Class, Module]
@@ -9,12 +10,13 @@ module SmartCore::Initializer::TypeSystem::RegistryInterface
9
10
  #
10
11
  # @api private
11
12
  # @since 0.1.0
13
+ # @version 0.10.0
12
14
  def extended(base_module)
13
15
  base_module.instance_variable_set(
14
16
  :@registry, SmartCore::Initializer::TypeSystem::Registry.new
15
17
  )
16
18
  base_module.instance_variable_set(
17
- :@access_lock, SmartCore::Engine::Lock.new
19
+ :@access_lock, SmartCore::Engine::ReadWriteLock.new
18
20
  )
19
21
  end
20
22
  end
@@ -25,8 +27,9 @@ module SmartCore::Initializer::TypeSystem::RegistryInterface
25
27
  #
26
28
  # @api private
27
29
  # @since 0.1.0
30
+ # @version 0.10.0
28
31
  def build_interop(system: system_identifier, type: type_object)
29
- thread_safe { registry.resolve(system_identifier).create(type_object) }
32
+ @access_lock.read_sync { registry.resolve(system_identifier).create(type_object) }
30
33
  end
31
34
 
32
35
  # @param identifier [String, Symbol]
@@ -35,8 +38,9 @@ module SmartCore::Initializer::TypeSystem::RegistryInterface
35
38
  #
36
39
  # @api private
37
40
  # @since 0.1.0
41
+ # @version 0.10.0
38
42
  def register(identifier, interop_klass)
39
- thread_safe { registry.register(identifier, interop_klass) }
43
+ @access_lock.write_sync { registry.register(identifier, interop_klass) }
40
44
  end
41
45
 
42
46
  # @param identifier [String, Symbol]
@@ -44,8 +48,9 @@ module SmartCore::Initializer::TypeSystem::RegistryInterface
44
48
  #
45
49
  # @api private
46
50
  # @since 0.1.0
51
+ # @version 0.10.0
47
52
  def resolve(identifier)
48
- thread_safe { registry.resolve(identifier) }
53
+ @access_lock.read_sync { registry.resolve(identifier) }
49
54
  end
50
55
  alias_method :[], :resolve
51
56
 
@@ -53,16 +58,18 @@ module SmartCore::Initializer::TypeSystem::RegistryInterface
53
58
  #
54
59
  # @api public
55
60
  # @since 0.1.0
61
+ # @version 0.10.0
56
62
  def names
57
- thread_safe { registry.names }
63
+ @access_lock.read_sync { registry.names }
58
64
  end
59
65
 
60
66
  # @return [Array<Class<SmartCore::Initializer::TypeSystem::Interop>>]
61
67
  #
62
68
  # @api public
63
69
  # @since 0.1.0
70
+ # @version 0.10.0
64
71
  def systems
65
- thread_safe { registry.to_h }
72
+ @access_lock.read_sync { registry.to_h }
66
73
  end
67
74
 
68
75
  # @param block [Block]
@@ -73,8 +80,9 @@ module SmartCore::Initializer::TypeSystem::RegistryInterface
73
80
  #
74
81
  # @api public
75
82
  # @since 0.1.0
83
+ # @version 0.10.0
76
84
  def each(&block)
77
- thread_safe { registry.each(&block) }
85
+ @access_lock.read_sync { registry.each(&block) }
78
86
  end
79
87
 
80
88
  private
@@ -84,19 +92,4 @@ module SmartCore::Initializer::TypeSystem::RegistryInterface
84
92
  # @api private
85
93
  # @since 0.1.0
86
94
  attr_reader :registry
87
-
88
- # @return [SmartCore::Engine::Lock]
89
- #
90
- # @api private
91
- # @since 0.1.0
92
- attr_reader :access_lock
93
-
94
- # @param block [Block]
95
- # @return [Any]
96
- #
97
- # @api pribate
98
- # @since 0.1.0
99
- def thread_safe(&block)
100
- access_lock.synchronize(&block)
101
- end
102
95
  end
@@ -6,7 +6,7 @@ module SmartCore
6
6
  #
7
7
  # @api public
8
8
  # @since 0.1.0
9
- # @version 0.9.1
10
- VERSION = '0.9.1'
9
+ # @version 0.11.0
10
+ VERSION = '0.11.0'
11
11
  end
12
12
  end
@@ -3,7 +3,7 @@
3
3
  require_relative 'lib/smart_core/initializer/version'
4
4
 
5
5
  Gem::Specification.new do |spec|
6
- spec.required_ruby_version = Gem::Requirement.new('>= 2.5')
6
+ spec.required_ruby_version = Gem::Requirement.new('>= 2.7')
7
7
 
8
8
  spec.name = 'smart_initializer'
9
9
  spec.version = SmartCore::Initializer::VERSION
@@ -30,14 +30,14 @@ Gem::Specification.new do |spec|
30
30
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
31
31
  spec.require_paths = ['lib']
32
32
 
33
- spec.add_dependency 'smart_engine', '~> 0.11'
34
- spec.add_dependency 'smart_types', '~> 0.4'
33
+ spec.add_dependency 'smart_engine', '~> 0.16'
34
+ spec.add_dependency 'smart_types', '~> 0.7'
35
35
  spec.add_dependency 'qonfig', '~> 0.24'
36
36
 
37
- spec.add_development_dependency 'bundler', '~> 2.2'
37
+ spec.add_development_dependency 'bundler', '~> 2.3'
38
38
  spec.add_development_dependency 'rake', '~> 13.0'
39
- spec.add_development_dependency 'rspec', '~> 3.10'
40
- spec.add_development_dependency 'armitage-rubocop', '~> 1.23'
39
+ spec.add_development_dependency 'rspec', '~> 3.11'
40
+ spec.add_development_dependency 'armitage-rubocop', '~> 1.30'
41
41
  spec.add_development_dependency 'simplecov', '~> 0.21'
42
42
  spec.add_development_dependency 'pry', '~> 0.14'
43
43
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smart_initializer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rustam Ibragimov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-03-18 00:00:00.000000000 Z
11
+ date: 2022-11-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: smart_engine
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.11'
19
+ version: '0.16'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.11'
26
+ version: '0.16'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: smart_types
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.4'
33
+ version: '0.7'
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.4'
40
+ version: '0.7'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: qonfig
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '2.2'
61
+ version: '2.3'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '2.2'
68
+ version: '2.3'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -86,28 +86,28 @@ dependencies:
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '3.10'
89
+ version: '3.11'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '3.10'
96
+ version: '3.11'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: armitage-rubocop
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '1.23'
103
+ version: '1.30'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '1.23'
110
+ version: '1.30'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: simplecov
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -239,14 +239,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
239
239
  requirements:
240
240
  - - ">="
241
241
  - !ruby/object:Gem::Version
242
- version: '2.5'
242
+ version: '2.7'
243
243
  required_rubygems_version: !ruby/object:Gem::Requirement
244
244
  requirements:
245
245
  - - ">="
246
246
  - !ruby/object:Gem::Version
247
247
  version: '0'
248
248
  requirements: []
249
- rubygems_version: 3.3.0.dev
249
+ rubygems_version: 3.3.7
250
250
  signing_key:
251
251
  specification_version: 4
252
252
  summary: Initializer DSL