artery 1.1.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.
Files changed (49) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +43 -0
  4. data/Rakefile +29 -0
  5. data/app/models/concerns/artery/message_model.rb +53 -0
  6. data/config/routes.rb +4 -0
  7. data/db/migrate/20170110090949_create_artery_messages.rb +14 -0
  8. data/db/migrate/20170116143013_create_artery_last_model_updates.rb +10 -0
  9. data/db/migrate/20170420155129_change_last_model_updates_to_subscription_infos.rb +17 -0
  10. data/db/migrate/20171020104646_add_subscriber_to_artery_subscription_infos.rb +5 -0
  11. data/db/migrate/20181211110018_add_latest_index_to_artery_subscription_infos.rb +5 -0
  12. data/db/migrate/20200109120304_add_index_on_model_to_artery_messages.rb +9 -0
  13. data/db/migrate/20200109120305_remove_last_message_at_from_artery_subscription_infos.rb +9 -0
  14. data/db/migrate/20240411120304_add_synchronization_heartbeat_to_artery_subscription_infos.rb +11 -0
  15. data/exe/artery-check +9 -0
  16. data/exe/artery-clean +9 -0
  17. data/exe/artery-sync +9 -0
  18. data/exe/artery-worker +9 -0
  19. data/lib/artery/active_record/message.rb +41 -0
  20. data/lib/artery/active_record/subscription_info.rb +50 -0
  21. data/lib/artery/active_record.rb +8 -0
  22. data/lib/artery/backend.rb +95 -0
  23. data/lib/artery/backends/base.rb +41 -0
  24. data/lib/artery/backends/fake.rb +24 -0
  25. data/lib/artery/backends/nats_pure.rb +86 -0
  26. data/lib/artery/check.rb +48 -0
  27. data/lib/artery/config.rb +72 -0
  28. data/lib/artery/engine.rb +16 -0
  29. data/lib/artery/errors.rb +76 -0
  30. data/lib/artery/healthz_subscription.rb +14 -0
  31. data/lib/artery/model/callbacks.rb +40 -0
  32. data/lib/artery/model/subscriptions.rb +147 -0
  33. data/lib/artery/model.rb +96 -0
  34. data/lib/artery/no_brainer/message.rb +67 -0
  35. data/lib/artery/no_brainer/subscription_info.rb +67 -0
  36. data/lib/artery/no_brainer.rb +8 -0
  37. data/lib/artery/routing.rb +63 -0
  38. data/lib/artery/subscription/incoming_message.rb +94 -0
  39. data/lib/artery/subscription/synchronization.rb +221 -0
  40. data/lib/artery/subscription.rb +136 -0
  41. data/lib/artery/subscriptions.rb +42 -0
  42. data/lib/artery/sync.rb +35 -0
  43. data/lib/artery/version.rb +5 -0
  44. data/lib/artery/worker.rb +75 -0
  45. data/lib/artery/worker_healthz_subscription.rb +23 -0
  46. data/lib/artery.rb +56 -0
  47. data/lib/multiblock_has_block.rb +11 -0
  48. data/lib/tasks/artery_tasks.rake +6 -0
  49. metadata +160 -0
data/lib/artery.rb ADDED
@@ -0,0 +1,56 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'artery/engine' if defined?(Rails)
4
+
5
+ require_relative 'artery/errors'
6
+ require_relative 'artery/backends/base'
7
+
8
+ require 'multiblock'
9
+ require_relative 'multiblock_has_block'
10
+
11
+ module Artery
12
+ autoload :Config, 'artery/config'
13
+ autoload :Worker, 'artery/worker'
14
+ autoload :Sync, 'artery/sync'
15
+ autoload :Check, 'artery/check'
16
+ autoload :Model, 'artery/model'
17
+ autoload :Routing, 'artery/routing'
18
+ autoload :Backend, 'artery/backend'
19
+ autoload :Subscriptions, 'artery/subscriptions'
20
+
21
+ include Config
22
+ include Backend
23
+ include Subscriptions
24
+
25
+ module Backends
26
+ autoload :Base, 'artery/backends/base'
27
+ autoload :NATS, 'artery/backends/nats'
28
+ autoload :NATSPure, 'artery/backends/nats_pure'
29
+ autoload :Fake, 'artery/backends/fake'
30
+ end
31
+
32
+ # ORMs
33
+ autoload :ActiveRecord, 'artery/active_record'
34
+ autoload :NoBrainer, 'artery/no_brainer'
35
+
36
+ register_backend :nats_pure, :NATSPure
37
+ register_backend :fake, :Fake
38
+
39
+ use_backend :nats_pure # default
40
+
41
+ class << self
42
+ attr_accessor :worker
43
+
44
+ def handle_signals
45
+ %w[TERM INT].each do |sig|
46
+ trap(sig) do
47
+ puts "Caught #{sig} signal, exiting..."
48
+
49
+ yield if block_given?
50
+
51
+ exit
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Multiblock
4
+ module HasBlock
5
+ def has_block?(block_name)
6
+ @blocks.key?(block_name.to_s)
7
+ end
8
+ end
9
+ end
10
+
11
+ Multiblock::Wrapper.include Multiblock::HasBlock
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ # desc "Explaining what the task does"
4
+ # task :artery do
5
+ # # Task goes here
6
+ # end
metadata ADDED
@@ -0,0 +1,160 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: artery
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Sergey Gnuskov
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: multiblock
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '0.2'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '0.2'
26
+ - !ruby/object:Gem::Dependency
27
+ name: artery-browser
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '0.1'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '0.1'
40
+ - !ruby/object:Gem::Dependency
41
+ name: nats-pure
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '2.0'
47
+ - - "<"
48
+ - !ruby/object:Gem::Version
49
+ version: '3'
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '2.0'
57
+ - - "<"
58
+ - !ruby/object:Gem::Version
59
+ version: '3'
60
+ - !ruby/object:Gem::Dependency
61
+ name: rails
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: '4.2'
67
+ - - "<"
68
+ - !ruby/object:Gem::Version
69
+ version: '8'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '4.2'
77
+ - - "<"
78
+ - !ruby/object:Gem::Version
79
+ version: '8'
80
+ email:
81
+ - sergey.gnuskov@flant.com
82
+ executables:
83
+ - artery-check
84
+ - artery-clean
85
+ - artery-sync
86
+ - artery-worker
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - MIT-LICENSE
91
+ - README.md
92
+ - Rakefile
93
+ - app/models/concerns/artery/message_model.rb
94
+ - config/routes.rb
95
+ - db/migrate/20170110090949_create_artery_messages.rb
96
+ - db/migrate/20170116143013_create_artery_last_model_updates.rb
97
+ - db/migrate/20170420155129_change_last_model_updates_to_subscription_infos.rb
98
+ - db/migrate/20171020104646_add_subscriber_to_artery_subscription_infos.rb
99
+ - db/migrate/20181211110018_add_latest_index_to_artery_subscription_infos.rb
100
+ - db/migrate/20200109120304_add_index_on_model_to_artery_messages.rb
101
+ - db/migrate/20200109120305_remove_last_message_at_from_artery_subscription_infos.rb
102
+ - db/migrate/20240411120304_add_synchronization_heartbeat_to_artery_subscription_infos.rb
103
+ - exe/artery-check
104
+ - exe/artery-clean
105
+ - exe/artery-sync
106
+ - exe/artery-worker
107
+ - lib/artery.rb
108
+ - lib/artery/active_record.rb
109
+ - lib/artery/active_record/message.rb
110
+ - lib/artery/active_record/subscription_info.rb
111
+ - lib/artery/backend.rb
112
+ - lib/artery/backends/base.rb
113
+ - lib/artery/backends/fake.rb
114
+ - lib/artery/backends/nats_pure.rb
115
+ - lib/artery/check.rb
116
+ - lib/artery/config.rb
117
+ - lib/artery/engine.rb
118
+ - lib/artery/errors.rb
119
+ - lib/artery/healthz_subscription.rb
120
+ - lib/artery/model.rb
121
+ - lib/artery/model/callbacks.rb
122
+ - lib/artery/model/subscriptions.rb
123
+ - lib/artery/no_brainer.rb
124
+ - lib/artery/no_brainer/message.rb
125
+ - lib/artery/no_brainer/subscription_info.rb
126
+ - lib/artery/routing.rb
127
+ - lib/artery/subscription.rb
128
+ - lib/artery/subscription/incoming_message.rb
129
+ - lib/artery/subscription/synchronization.rb
130
+ - lib/artery/subscriptions.rb
131
+ - lib/artery/sync.rb
132
+ - lib/artery/version.rb
133
+ - lib/artery/worker.rb
134
+ - lib/artery/worker_healthz_subscription.rb
135
+ - lib/multiblock_has_block.rb
136
+ - lib/tasks/artery_tasks.rake
137
+ homepage: https://github.com/flant/artery
138
+ licenses:
139
+ - MIT
140
+ metadata:
141
+ rubygems_mfa_required: 'true'
142
+ rdoc_options: []
143
+ require_paths:
144
+ - lib
145
+ required_ruby_version: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ version: '2.7'
150
+ required_rubygems_version: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: '0'
155
+ requirements: []
156
+ rubygems_version: 3.6.9
157
+ specification_version: 4
158
+ summary: Main messaging system between Rails [micro]services implementing message
159
+ bus pattern on NATS.
160
+ test_files: []