lex-synapse 0.4.2 → 0.4.3
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 +4 -4
- data/CHANGELOG.md +5 -0
- data/lib/legion/extensions/synapse/data/models/synapse.rb +17 -13
- data/lib/legion/extensions/synapse/data/models/synapse_challenge.rb +11 -9
- data/lib/legion/extensions/synapse/data/models/synapse_mutation.rb +11 -9
- data/lib/legion/extensions/synapse/data/models/synapse_proposal.rb +11 -9
- data/lib/legion/extensions/synapse/data/models/synapse_signal.rb +11 -9
- data/lib/legion/extensions/synapse/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8344eb31eac2aa068d8d33f98797e7e35c19d02a2fe1aac8abf612e17bdd05e5
|
|
4
|
+
data.tar.gz: ccd61928b4c8bf0e2f94fdfa06c1f568c59e07ad00767f1c82baea823d7924c3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 37f95b2688000a6ef9219fc0e1de0708d12719b2df5d4043888e3b8e8cd1cde4a6daca0e0ff7967496218b500fb0660b4b534200784460d524faf33f9d83b9f5
|
|
7
|
+
data.tar.gz: f8b9c2ff7130b61ed862a958d96fe236f0aecfeafe4f18429ea6d4c6d2fa7997c24d759d3227764fc633fb11e062779f90237d7e90681563c6a9fc897a04a837
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.4.3] - 2026-03-22
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
- Race condition in lazy model definition: concurrent threads could both pass `const_defined?` before either called `const_set`, producing "already initialized constant" warnings. Added shared mutex to all 5 `define_*_model` methods.
|
|
7
|
+
|
|
3
8
|
## [0.4.2] - 2026-03-22
|
|
4
9
|
|
|
5
10
|
### Fixed
|
|
@@ -5,23 +5,27 @@ module Legion
|
|
|
5
5
|
module Synapse
|
|
6
6
|
module Data
|
|
7
7
|
module Model
|
|
8
|
+
@define_mutex = Mutex.new
|
|
9
|
+
|
|
8
10
|
def self.define_synapse_model
|
|
9
|
-
|
|
10
|
-
|
|
11
|
+
@define_mutex.synchronize do
|
|
12
|
+
return if const_defined?(:Synapse, false)
|
|
13
|
+
return unless defined?(Legion::Data) && Legion::Settings.dig(:data, :connected)
|
|
11
14
|
|
|
12
|
-
|
|
13
|
-
|
|
15
|
+
db = Sequel::Model.db
|
|
16
|
+
return unless db&.table_exists?(:synapses)
|
|
14
17
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
klass = Class.new(Sequel::Model(:synapses)) do
|
|
19
|
+
one_to_many :mutations, class: 'Legion::Extensions::Synapse::Data::Model::SynapseMutation',
|
|
20
|
+
key: :synapse_id
|
|
21
|
+
one_to_many :signals, class: 'Legion::Extensions::Synapse::Data::Model::SynapseSignal',
|
|
22
|
+
key: :synapse_id
|
|
23
|
+
one_to_many :proposals, class: 'Legion::Extensions::Synapse::Data::Model::SynapseProposal',
|
|
24
|
+
key: :synapse_id
|
|
25
|
+
end
|
|
26
|
+
klass.set_primary_key :id
|
|
27
|
+
const_set(:Synapse, klass)
|
|
22
28
|
end
|
|
23
|
-
klass.set_primary_key :id
|
|
24
|
-
const_set(:Synapse, klass)
|
|
25
29
|
end
|
|
26
30
|
end
|
|
27
31
|
end
|
|
@@ -6,18 +6,20 @@ module Legion
|
|
|
6
6
|
module Data
|
|
7
7
|
module Model
|
|
8
8
|
def self.define_synapse_challenge_model
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
@define_mutex.synchronize do
|
|
10
|
+
return if const_defined?(:SynapseChallenge, false)
|
|
11
|
+
return unless defined?(Legion::Data) && Legion::Settings.dig(:data, :connected)
|
|
11
12
|
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
db = Sequel::Model.db
|
|
14
|
+
return unless db&.table_exists?(:synapse_challenges)
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
klass = Class.new(Sequel::Model(:synapse_challenges)) do
|
|
17
|
+
many_to_one :proposal, class: 'Legion::Extensions::Synapse::Data::Model::SynapseProposal',
|
|
18
|
+
key: :proposal_id
|
|
19
|
+
end
|
|
20
|
+
klass.set_primary_key :id
|
|
21
|
+
const_set(:SynapseChallenge, klass)
|
|
18
22
|
end
|
|
19
|
-
klass.set_primary_key :id
|
|
20
|
-
const_set(:SynapseChallenge, klass)
|
|
21
23
|
end
|
|
22
24
|
end
|
|
23
25
|
end
|
|
@@ -6,18 +6,20 @@ module Legion
|
|
|
6
6
|
module Data
|
|
7
7
|
module Model
|
|
8
8
|
def self.define_synapse_mutation_model
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
@define_mutex.synchronize do
|
|
10
|
+
return if const_defined?(:SynapseMutation, false)
|
|
11
|
+
return unless defined?(Legion::Data) && Legion::Settings.dig(:data, :connected)
|
|
11
12
|
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
db = Sequel::Model.db
|
|
14
|
+
return unless db&.table_exists?(:synapse_mutations)
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
klass = Class.new(Sequel::Model(:synapse_mutations)) do
|
|
17
|
+
many_to_one :synapse, class: 'Legion::Extensions::Synapse::Data::Model::Synapse',
|
|
18
|
+
key: :synapse_id
|
|
19
|
+
end
|
|
20
|
+
klass.set_primary_key :id
|
|
21
|
+
const_set(:SynapseMutation, klass)
|
|
18
22
|
end
|
|
19
|
-
klass.set_primary_key :id
|
|
20
|
-
const_set(:SynapseMutation, klass)
|
|
21
23
|
end
|
|
22
24
|
end
|
|
23
25
|
end
|
|
@@ -6,18 +6,20 @@ module Legion
|
|
|
6
6
|
module Data
|
|
7
7
|
module Model
|
|
8
8
|
def self.define_synapse_proposal_model
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
@define_mutex.synchronize do
|
|
10
|
+
return if const_defined?(:SynapseProposal, false)
|
|
11
|
+
return unless defined?(Legion::Data) && Legion::Settings.dig(:data, :connected)
|
|
11
12
|
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
db = Sequel::Model.db
|
|
14
|
+
return unless db&.table_exists?(:synapse_proposals)
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
klass = Class.new(Sequel::Model(:synapse_proposals)) do
|
|
17
|
+
many_to_one :synapse, class: 'Legion::Extensions::Synapse::Data::Model::Synapse',
|
|
18
|
+
key: :synapse_id
|
|
19
|
+
end
|
|
20
|
+
klass.set_primary_key :id
|
|
21
|
+
const_set(:SynapseProposal, klass)
|
|
18
22
|
end
|
|
19
|
-
klass.set_primary_key :id
|
|
20
|
-
const_set(:SynapseProposal, klass)
|
|
21
23
|
end
|
|
22
24
|
end
|
|
23
25
|
end
|
|
@@ -6,18 +6,20 @@ module Legion
|
|
|
6
6
|
module Data
|
|
7
7
|
module Model
|
|
8
8
|
def self.define_synapse_signal_model
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
@define_mutex.synchronize do
|
|
10
|
+
return if const_defined?(:SynapseSignal, false)
|
|
11
|
+
return unless defined?(Legion::Data) && Legion::Settings.dig(:data, :connected)
|
|
11
12
|
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
db = Sequel::Model.db
|
|
14
|
+
return unless db&.table_exists?(:synapse_signals)
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
klass = Class.new(Sequel::Model(:synapse_signals)) do
|
|
17
|
+
many_to_one :synapse, class: 'Legion::Extensions::Synapse::Data::Model::Synapse',
|
|
18
|
+
key: :synapse_id
|
|
19
|
+
end
|
|
20
|
+
klass.set_primary_key :id
|
|
21
|
+
const_set(:SynapseSignal, klass)
|
|
18
22
|
end
|
|
19
|
-
klass.set_primary_key :id
|
|
20
|
-
const_set(:SynapseSignal, klass)
|
|
21
23
|
end
|
|
22
24
|
end
|
|
23
25
|
end
|