hyper-operation 1.0.alpha1.5 → 1.0.alpha1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -0
- data/hyper-operation.gemspec +6 -5
- data/lib/hyper-operation.rb +2 -1
- data/lib/hyper-operation/api.rb +6 -2
- data/lib/hyper-operation/async_sleep.rb +23 -0
- data/lib/hyper-operation/railway/dispatcher.rb +0 -1
- data/lib/hyper-operation/railway/run.rb +4 -1
- data/lib/hyper-operation/server_op.rb +1 -1
- data/lib/hyper-operation/transport/client_drivers.rb +2 -2
- data/lib/hyper-operation/transport/connection.rb +58 -136
- data/lib/hyper-operation/transport/connection_adapter/active_record.rb +113 -0
- data/lib/hyper-operation/transport/connection_adapter/active_record/auto_create.rb +26 -0
- data/lib/hyper-operation/transport/connection_adapter/active_record/connection.rb +47 -0
- data/lib/hyper-operation/transport/connection_adapter/active_record/queued_message.rb +42 -0
- data/lib/hyper-operation/transport/connection_adapter/redis.rb +94 -0
- data/lib/hyper-operation/transport/connection_adapter/redis/connection.rb +85 -0
- data/lib/hyper-operation/transport/connection_adapter/redis/queued_message.rb +34 -0
- data/lib/hyper-operation/transport/connection_adapter/redis/redis_record.rb +158 -0
- data/lib/hyper-operation/transport/hyperstack.rb +9 -1
- data/lib/hyper-operation/transport/hyperstack_controller.rb +5 -1
- data/lib/hyper-operation/transport/policy.rb +9 -4
- data/lib/hyper-operation/version.rb +1 -1
- metadata +64 -42
- data/lib/hyper-operation/delay_and_interval.rb +0 -9
@@ -16,7 +16,7 @@ module Hyperstack
|
|
16
16
|
# config.eager_load_paths += %W(#{config.root}/app/hyperstack/models)
|
17
17
|
# config.autoload_paths += %W(#{config.root}/app/hyperstack/models)
|
18
18
|
# config.assets.paths << ::Rails.root.join('app', 'hyperstack').to_s
|
19
|
-
config.after_initialize { Connection.build_tables }
|
19
|
+
config.after_initialize { Connection.build_tables if Connection.build_tables? }
|
20
20
|
end
|
21
21
|
Object.send(:remove_const, :Application) if @fake_application_defined
|
22
22
|
@fake_application_defined = false
|
@@ -66,6 +66,14 @@ module Hyperstack
|
|
66
66
|
define_setting :client_logging, true
|
67
67
|
define_setting :connect_session, true
|
68
68
|
|
69
|
+
define_setting(:connection, { adapter: :active_record }) do |connection|
|
70
|
+
if connection[:adapter] == :redis
|
71
|
+
require 'redis'
|
72
|
+
|
73
|
+
connection[:redis_url] ||= 'redis://127.0.0.1:6379/hyperstack'
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
69
77
|
def self.app_id
|
70
78
|
opts[:app_id] || Pusher.app_id if transport == :pusher
|
71
79
|
end
|
@@ -11,6 +11,10 @@ module Hyperstack
|
|
11
11
|
end
|
12
12
|
end if defined? ::WebConsole::Middleware
|
13
13
|
|
14
|
+
|
15
|
+
# The purpose of this is to prevent massive amounts of logging
|
16
|
+
# if using simple polling. If polling is on then only actual messages
|
17
|
+
# with content will be shown, other wise the log message is dropped.
|
14
18
|
module ::Rails
|
15
19
|
module Rack
|
16
20
|
class Logger < ActiveSupport::LogSubscriber
|
@@ -141,7 +145,7 @@ module Hyperstack
|
|
141
145
|
end
|
142
146
|
|
143
147
|
def execute_remote
|
144
|
-
parsed_params = JSON.parse(params[:
|
148
|
+
parsed_params = JSON.parse(params[:hyperstack_secured_json]).symbolize_keys
|
145
149
|
render ServerOp.run_from_client(
|
146
150
|
:acting_user,
|
147
151
|
self,
|
@@ -328,9 +328,9 @@ module Hyperstack
|
|
328
328
|
regulations[instance].regulations.each do |regulation|
|
329
329
|
instance.instance_exec wrap_policy(policy, regulation), ®ulation
|
330
330
|
end
|
331
|
-
if policy.
|
332
|
-
|
333
|
-
|
331
|
+
return if policy.has_to_been_called?
|
332
|
+
|
333
|
+
raise "#{instance.class.name} instance broadcast policy not sent to any channel"
|
334
334
|
end
|
335
335
|
end
|
336
336
|
|
@@ -425,12 +425,17 @@ module Hyperstack
|
|
425
425
|
end
|
426
426
|
|
427
427
|
def send_set_to(send_set, channels)
|
428
|
+
@to_has_been_called = true
|
428
429
|
channels.flatten(1).each do |channel|
|
429
430
|
merge_set(send_set, channel) if channel_available? channel
|
430
431
|
@unassigned_send_sets.delete(send_set)
|
431
432
|
end
|
432
433
|
end
|
433
434
|
|
435
|
+
def has_to_been_called?
|
436
|
+
!has_unassigned_sets? || @to_has_been_called
|
437
|
+
end
|
438
|
+
|
434
439
|
def merge_set(send_set, channel)
|
435
440
|
return unless channel
|
436
441
|
channel = channel.name if channel.is_a?(Class) && channel.name
|
@@ -467,7 +472,7 @@ module Hyperstack
|
|
467
472
|
|
468
473
|
def send_message(header, channel, attribute_set, &block)
|
469
474
|
record = filter(@obj.react_serializer, attribute_set)
|
470
|
-
previous_changes = filter(@obj.
|
475
|
+
previous_changes = filter(@obj.saved_changes, attribute_set)
|
471
476
|
return if record.empty? && previous_changes.empty?
|
472
477
|
message = header.merge(
|
473
478
|
channel: channel_to_string(channel),
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hyper-operation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.alpha1.
|
4
|
+
version: 1.0.alpha1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mitch VanDuyn
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2021-03-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activerecord
|
@@ -31,14 +31,14 @@ dependencies:
|
|
31
31
|
requirements:
|
32
32
|
- - '='
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: 1.0.alpha1.
|
34
|
+
version: 1.0.alpha1.6
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - '='
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: 1.0.alpha1.
|
41
|
+
version: 1.0.alpha1.6
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: mutations
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
@@ -87,20 +87,14 @@ dependencies:
|
|
87
87
|
requirements:
|
88
88
|
- - ">="
|
89
89
|
- !ruby/object:Gem::Version
|
90
|
-
version:
|
91
|
-
- - "<"
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: '2.1'
|
90
|
+
version: '0'
|
94
91
|
type: :development
|
95
92
|
prerelease: false
|
96
93
|
version_requirements: !ruby/object:Gem::Requirement
|
97
94
|
requirements:
|
98
95
|
- - ">="
|
99
96
|
- !ruby/object:Gem::Version
|
100
|
-
version:
|
101
|
-
- - "<"
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '2.1'
|
97
|
+
version: '0'
|
104
98
|
- !ruby/object:Gem::Dependency
|
105
99
|
name: chromedriver-helper
|
106
100
|
requirement: !ruby/object:Gem::Requirement
|
@@ -135,14 +129,14 @@ dependencies:
|
|
135
129
|
requirements:
|
136
130
|
- - '='
|
137
131
|
- !ruby/object:Gem::Version
|
138
|
-
version: 1.0.alpha1.
|
132
|
+
version: 1.0.alpha1.6
|
139
133
|
type: :development
|
140
134
|
prerelease: false
|
141
135
|
version_requirements: !ruby/object:Gem::Requirement
|
142
136
|
requirements:
|
143
137
|
- - '='
|
144
138
|
- !ruby/object:Gem::Version
|
145
|
-
version: 1.0.alpha1.
|
139
|
+
version: 1.0.alpha1.6
|
146
140
|
- !ruby/object:Gem::Dependency
|
147
141
|
name: mysql2
|
148
142
|
requirement: !ruby/object:Gem::Requirement
|
@@ -157,26 +151,6 @@ dependencies:
|
|
157
151
|
- - ">="
|
158
152
|
- !ruby/object:Gem::Version
|
159
153
|
version: '0'
|
160
|
-
- !ruby/object:Gem::Dependency
|
161
|
-
name: opal
|
162
|
-
requirement: !ruby/object:Gem::Requirement
|
163
|
-
requirements:
|
164
|
-
- - ">="
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
version: 0.11.0
|
167
|
-
- - "<"
|
168
|
-
- !ruby/object:Gem::Version
|
169
|
-
version: 0.12.0
|
170
|
-
type: :development
|
171
|
-
prerelease: false
|
172
|
-
version_requirements: !ruby/object:Gem::Requirement
|
173
|
-
requirements:
|
174
|
-
- - ">="
|
175
|
-
- !ruby/object:Gem::Version
|
176
|
-
version: 0.11.0
|
177
|
-
- - "<"
|
178
|
-
- !ruby/object:Gem::Version
|
179
|
-
version: 0.12.0
|
180
154
|
- !ruby/object:Gem::Dependency
|
181
155
|
name: opal-browser
|
182
156
|
requirement: !ruby/object:Gem::Requirement
|
@@ -195,16 +169,22 @@ dependencies:
|
|
195
169
|
name: opal-rails
|
196
170
|
requirement: !ruby/object:Gem::Requirement
|
197
171
|
requirements:
|
198
|
-
- - "
|
172
|
+
- - ">="
|
199
173
|
- !ruby/object:Gem::Version
|
200
174
|
version: 0.9.4
|
175
|
+
- - "<"
|
176
|
+
- !ruby/object:Gem::Version
|
177
|
+
version: '2.0'
|
201
178
|
type: :development
|
202
179
|
prerelease: false
|
203
180
|
version_requirements: !ruby/object:Gem::Requirement
|
204
181
|
requirements:
|
205
|
-
- - "
|
182
|
+
- - ">="
|
206
183
|
- !ruby/object:Gem::Version
|
207
184
|
version: 0.9.4
|
185
|
+
- - "<"
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '2.0'
|
208
188
|
- !ruby/object:Gem::Dependency
|
209
189
|
name: pry-rescue
|
210
190
|
requirement: !ruby/object:Gem::Requirement
|
@@ -219,6 +199,20 @@ dependencies:
|
|
219
199
|
- - ">="
|
220
200
|
- !ruby/object:Gem::Version
|
221
201
|
version: '0'
|
202
|
+
- !ruby/object:Gem::Dependency
|
203
|
+
name: pry-stack_explorer
|
204
|
+
requirement: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - ">="
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '0'
|
209
|
+
type: :development
|
210
|
+
prerelease: false
|
211
|
+
version_requirements: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - ">="
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: '0'
|
222
216
|
- !ruby/object:Gem::Dependency
|
223
217
|
name: puma
|
224
218
|
requirement: !ruby/object:Gem::Requirement
|
@@ -267,14 +261,20 @@ dependencies:
|
|
267
261
|
requirements:
|
268
262
|
- - ">="
|
269
263
|
- !ruby/object:Gem::Version
|
270
|
-
version:
|
264
|
+
version: 5.0.0
|
265
|
+
- - "<"
|
266
|
+
- !ruby/object:Gem::Version
|
267
|
+
version: '7.0'
|
271
268
|
type: :development
|
272
269
|
prerelease: false
|
273
270
|
version_requirements: !ruby/object:Gem::Requirement
|
274
271
|
requirements:
|
275
272
|
- - ">="
|
276
273
|
- !ruby/object:Gem::Version
|
277
|
-
version:
|
274
|
+
version: 5.0.0
|
275
|
+
- - "<"
|
276
|
+
- !ruby/object:Gem::Version
|
277
|
+
version: '7.0'
|
278
278
|
- !ruby/object:Gem::Dependency
|
279
279
|
name: rake
|
280
280
|
requirement: !ruby/object:Gem::Requirement
|
@@ -309,6 +309,20 @@ dependencies:
|
|
309
309
|
- - "<"
|
310
310
|
- !ruby/object:Gem::Version
|
311
311
|
version: 2.5.0
|
312
|
+
- !ruby/object:Gem::Dependency
|
313
|
+
name: redis
|
314
|
+
requirement: !ruby/object:Gem::Requirement
|
315
|
+
requirements:
|
316
|
+
- - ">="
|
317
|
+
- !ruby/object:Gem::Version
|
318
|
+
version: '0'
|
319
|
+
type: :development
|
320
|
+
prerelease: false
|
321
|
+
version_requirements: !ruby/object:Gem::Requirement
|
322
|
+
requirements:
|
323
|
+
- - ">="
|
324
|
+
- !ruby/object:Gem::Version
|
325
|
+
version: '0'
|
312
326
|
- !ruby/object:Gem::Dependency
|
313
327
|
name: rspec-rails
|
314
328
|
requirement: !ruby/object:Gem::Requirement
|
@@ -357,14 +371,14 @@ dependencies:
|
|
357
371
|
requirements:
|
358
372
|
- - "~>"
|
359
373
|
- !ruby/object:Gem::Version
|
360
|
-
version: 1.
|
374
|
+
version: 1.4.2
|
361
375
|
type: :development
|
362
376
|
prerelease: false
|
363
377
|
version_requirements: !ruby/object:Gem::Requirement
|
364
378
|
requirements:
|
365
379
|
- - "~>"
|
366
380
|
- !ruby/object:Gem::Version
|
367
|
-
version: 1.
|
381
|
+
version: 1.4.2
|
368
382
|
- !ruby/object:Gem::Dependency
|
369
383
|
name: timecop
|
370
384
|
requirement: !ruby/object:Gem::Requirement
|
@@ -394,8 +408,8 @@ files:
|
|
394
408
|
- hyper-operation.gemspec
|
395
409
|
- lib/hyper-operation.rb
|
396
410
|
- lib/hyper-operation/api.rb
|
411
|
+
- lib/hyper-operation/async_sleep.rb
|
397
412
|
- lib/hyper-operation/boot.rb
|
398
|
-
- lib/hyper-operation/delay_and_interval.rb
|
399
413
|
- lib/hyper-operation/engine.rb
|
400
414
|
- lib/hyper-operation/exception.rb
|
401
415
|
- lib/hyper-operation/filters/acting_user.rb
|
@@ -415,6 +429,14 @@ files:
|
|
415
429
|
- lib/hyper-operation/transport/active_record.rb
|
416
430
|
- lib/hyper-operation/transport/client_drivers.rb
|
417
431
|
- lib/hyper-operation/transport/connection.rb
|
432
|
+
- lib/hyper-operation/transport/connection_adapter/active_record.rb
|
433
|
+
- lib/hyper-operation/transport/connection_adapter/active_record/auto_create.rb
|
434
|
+
- lib/hyper-operation/transport/connection_adapter/active_record/connection.rb
|
435
|
+
- lib/hyper-operation/transport/connection_adapter/active_record/queued_message.rb
|
436
|
+
- lib/hyper-operation/transport/connection_adapter/redis.rb
|
437
|
+
- lib/hyper-operation/transport/connection_adapter/redis/connection.rb
|
438
|
+
- lib/hyper-operation/transport/connection_adapter/redis/queued_message.rb
|
439
|
+
- lib/hyper-operation/transport/connection_adapter/redis/redis_record.rb
|
418
440
|
- lib/hyper-operation/transport/hyperstack.rb
|
419
441
|
- lib/hyper-operation/transport/hyperstack_controller.rb
|
420
442
|
- lib/hyper-operation/transport/pluck.rb
|
@@ -441,7 +463,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
441
463
|
- !ruby/object:Gem::Version
|
442
464
|
version: 1.3.1
|
443
465
|
requirements: []
|
444
|
-
rubygems_version: 3.0.
|
466
|
+
rubygems_version: 3.0.8
|
445
467
|
signing_key:
|
446
468
|
specification_version: 4
|
447
469
|
summary: HyperOperations are the swiss army knife of the Hyperstack
|