hyper-operation 1.0.alpha1.8 → 1.0.0.lap28
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/.gitignore +2 -7
- data/.travis.yml +9 -21
- data/CODE_OF_CONDUCT.md +49 -0
- data/DOCS-POLICIES.md +582 -0
- data/DOCS.md +869 -0
- data/Gemfile +1 -5
- data/LICENSE.txt +21 -0
- data/README.md +77 -0
- data/Rakefile +2 -1
- data/dciy.toml +3 -0
- data/hyper-operation.gemspec +15 -19
- data/lib/hyper-operation.rb +6 -10
- data/lib/hyper-operation/api.rb +4 -8
- data/lib/hyper-operation/boot.rb +2 -3
- data/lib/hyper-operation/delay_and_interval.rb +9 -0
- data/lib/hyper-operation/engine.rb +2 -2
- data/lib/hyper-operation/exception.rb +4 -30
- data/lib/hyper-operation/filters/acting_user.rb +1 -1
- data/lib/hyper-operation/http.rb +2 -2
- data/lib/hyper-operation/promise.rb +2 -32
- data/lib/hyper-operation/railway.rb +1 -1
- data/lib/hyper-operation/railway/dispatcher.rb +5 -8
- data/lib/hyper-operation/railway/params_wrapper.rb +2 -2
- data/lib/hyper-operation/railway/run.rb +49 -58
- data/lib/hyper-operation/railway/validations.rb +3 -10
- data/lib/hyper-operation/server_op.rb +20 -46
- data/lib/hyper-operation/transport/action_cable.rb +8 -8
- data/lib/hyper-operation/transport/client_drivers.rb +55 -96
- data/lib/hyper-operation/transport/connection.rb +136 -58
- data/lib/hyper-operation/transport/{hyperstack.rb → hyperloop.rb} +15 -28
- data/lib/hyper-operation/transport/{hyperstack_controller.rb → hyperloop_controller.rb} +53 -59
- data/lib/hyper-operation/transport/policy.rb +49 -50
- data/lib/hyper-operation/version.rb +2 -2
- data/lib/sources/{hyperstack → hyperloop}/pusher.js +0 -0
- metadata +73 -94
- data/lib/hyper-operation/async_sleep.rb +0 -23
- data/lib/hyper-operation/transport/connection_adapter/active_record.rb +0 -113
- data/lib/hyper-operation/transport/connection_adapter/active_record/auto_create.rb +0 -26
- data/lib/hyper-operation/transport/connection_adapter/active_record/connection.rb +0 -47
- data/lib/hyper-operation/transport/connection_adapter/active_record/queued_message.rb +0 -42
- data/lib/hyper-operation/transport/connection_adapter/redis.rb +0 -94
- data/lib/hyper-operation/transport/connection_adapter/redis/connection.rb +0 -85
- data/lib/hyper-operation/transport/connection_adapter/redis/queued_message.rb +0 -34
- data/lib/hyper-operation/transport/connection_adapter/redis/redis_record.rb +0 -158
- data/lib/hyper-operation/transport/policy_diagnostics.rb +0 -106
@@ -1,18 +1,8 @@
|
|
1
|
-
module
|
1
|
+
module Hyperloop
|
2
2
|
|
3
3
|
class InternalClassPolicy
|
4
4
|
|
5
5
|
def initialize(regulated_klass)
|
6
|
-
unless regulated_klass.is_a?(Class)
|
7
|
-
# attempt to constantize the class in case eager_loading in production
|
8
|
-
# has loaded the policy before the class. THis will insure that if
|
9
|
-
# there is a class being regulated, it is loaded first.
|
10
|
-
begin
|
11
|
-
regulated_klass.constantize
|
12
|
-
rescue NameError
|
13
|
-
nil
|
14
|
-
end
|
15
|
-
end
|
16
6
|
@regulated_klass = regulated_klass
|
17
7
|
end
|
18
8
|
|
@@ -21,7 +11,7 @@ module Hyperstack
|
|
21
11
|
EXPOSED_METHODS = [
|
22
12
|
:regulate_class_connection, :always_allow_connection, :regulate_instance_connections,
|
23
13
|
:regulate_all_broadcasts, :regulate_broadcast,
|
24
|
-
:regulate_dispatches_from, :always_dispatch_from,
|
14
|
+
:dispatch_to, :regulate_dispatches_from, :always_dispatch_from,
|
25
15
|
:allow_change, :allow_create, :allow_read, :allow_update, :allow_destroy
|
26
16
|
]
|
27
17
|
|
@@ -58,6 +48,21 @@ module Hyperstack
|
|
58
48
|
regulate_dispatches_from(*args) { true }
|
59
49
|
end
|
60
50
|
|
51
|
+
def dispatch_to(*args, ®ulation)
|
52
|
+
actual_klass = if regulated_klass.is_a?(Class)
|
53
|
+
regulated_klass
|
54
|
+
else
|
55
|
+
begin
|
56
|
+
regulated_klass.constantize
|
57
|
+
rescue NameError
|
58
|
+
nil
|
59
|
+
end
|
60
|
+
end
|
61
|
+
raise 'you can only dispatch_to Operation classes' unless actual_klass.respond_to? :dispatch_to
|
62
|
+
actual_klass.dispatch_to(actual_klass)
|
63
|
+
actual_klass.dispatch_to(*args, ®ulation)
|
64
|
+
end
|
65
|
+
|
61
66
|
CHANGE_POLICIES = [:create, :update, :destroy]
|
62
67
|
|
63
68
|
def self.allow_policy(policy, method)
|
@@ -90,7 +95,7 @@ module Hyperstack
|
|
90
95
|
def get_ar_model(str)
|
91
96
|
if str.is_a?(Class)
|
92
97
|
unless str <= ActiveRecord::Base
|
93
|
-
|
98
|
+
Hyperloop::InternalPolicy.raise_operation_access_violation
|
94
99
|
end
|
95
100
|
str
|
96
101
|
else
|
@@ -99,12 +104,12 @@ module Hyperstack
|
|
99
104
|
# def self.ar_base_descendants_map_cache
|
100
105
|
# @ar_base_descendants_map_cache ||= ActiveRecord::Base.descendants.map(&:name)
|
101
106
|
# end
|
102
|
-
# if Rails.env.production? && !
|
107
|
+
# if Rails.env.production? && !Hyperloop::InternalClassPolicy.ar_base_descendants_map_cache.include?(str)
|
103
108
|
if Rails.application.config.eager_load && !ActiveRecord::Base.descendants.map(&:name).include?(str)
|
104
109
|
# AR::Base.descendants is eager loaded in production -> this guard works.
|
105
110
|
# In development it may be empty or partially filled -> this guard may fail.
|
106
111
|
# Thus guarded here only in production.
|
107
|
-
|
112
|
+
Hyperloop::InternalPolicy.raise_operation_access_violation
|
108
113
|
end
|
109
114
|
Object.const_get(str)
|
110
115
|
end
|
@@ -187,7 +192,7 @@ module Hyperstack
|
|
187
192
|
raise "Could not determine the class when regulating. This is probably caused by doing something like &:send_all"
|
188
193
|
end
|
189
194
|
wrapped_policy = policy_klass.new(nil, nil)
|
190
|
-
wrapped_policy.
|
195
|
+
wrapped_policy.hyperloop_internal_policy_object = policy
|
191
196
|
wrapped_policy
|
192
197
|
end
|
193
198
|
|
@@ -328,9 +333,9 @@ module Hyperstack
|
|
328
333
|
regulations[instance].regulations.each do |regulation|
|
329
334
|
instance.instance_exec wrap_policy(policy, regulation), ®ulation
|
330
335
|
end
|
331
|
-
|
332
|
-
|
333
|
-
|
336
|
+
if policy.has_unassigned_sets?
|
337
|
+
raise "#{instance.class.name} instance broadcast policy not sent to any channel"
|
338
|
+
end
|
334
339
|
end
|
335
340
|
end
|
336
341
|
|
@@ -338,7 +343,7 @@ module Hyperstack
|
|
338
343
|
def self.channels(session, acting_user)
|
339
344
|
channels = ClassConnectionRegulation.connections_for(acting_user, true) +
|
340
345
|
InstanceConnectionRegulation.connections_for(acting_user, true)
|
341
|
-
channels << "
|
346
|
+
channels << "Hyperloop::Session-#{session.split('-').last}" if Hyperloop.connect_session && session
|
342
347
|
channels.uniq.each { |channel| Connection.open(channel, session) }
|
343
348
|
end
|
344
349
|
end
|
@@ -363,16 +368,16 @@ module Hyperstack
|
|
363
368
|
@obj
|
364
369
|
end
|
365
370
|
|
366
|
-
def self.raise_operation_access_violation
|
367
|
-
raise
|
371
|
+
def self.raise_operation_access_violation
|
372
|
+
raise Hyperloop::AccessViolation
|
368
373
|
end
|
369
374
|
|
370
375
|
def self.regulate_connection(acting_user, channel_string)
|
371
376
|
channel = channel_string.split("-")
|
372
377
|
if channel.length > 1
|
373
378
|
id = channel[1..-1].join("-")
|
374
|
-
unless
|
375
|
-
|
379
|
+
unless Hyperloop::InternalClassPolicy.regulated_klasses.include?(channel[0])
|
380
|
+
Hyperloop::InternalPolicy.raise_operation_access_violation
|
376
381
|
end
|
377
382
|
object = Object.const_get(channel[0]).find(id)
|
378
383
|
InstanceConnectionRegulation.connect(object, acting_user)
|
@@ -390,17 +395,16 @@ module Hyperstack
|
|
390
395
|
internal_policy.broadcast &block
|
391
396
|
end
|
392
397
|
|
393
|
-
def initialize(obj, attribute_names, available_channels
|
398
|
+
def initialize(obj, attribute_names, available_channels)
|
394
399
|
@obj = obj
|
395
|
-
|
400
|
+
attribute_names = attribute_names.map(&:to_sym).to_set
|
396
401
|
@unassigned_send_sets = []
|
397
|
-
@channel_sets = Hash.new { |hash, key| hash[key] =
|
402
|
+
@channel_sets = Hash.new { |hash, key| hash[key] = attribute_names }
|
398
403
|
@available_channels = available_channels
|
399
404
|
end
|
400
405
|
|
401
406
|
def channel_available?(channel)
|
402
|
-
|
403
|
-
@available_channels == :all || @available_channels.include?(channel_to_string(channel))
|
407
|
+
channel && @available_channels.include?(channel_to_string(channel))
|
404
408
|
end
|
405
409
|
|
406
410
|
def id
|
@@ -425,17 +429,12 @@ module Hyperstack
|
|
425
429
|
end
|
426
430
|
|
427
431
|
def send_set_to(send_set, channels)
|
428
|
-
@to_has_been_called = true
|
429
432
|
channels.flatten(1).each do |channel|
|
430
433
|
merge_set(send_set, channel) if channel_available? channel
|
431
434
|
@unassigned_send_sets.delete(send_set)
|
432
435
|
end
|
433
436
|
end
|
434
437
|
|
435
|
-
def has_to_been_called?
|
436
|
-
!has_unassigned_sets? || @to_has_been_called
|
437
|
-
end
|
438
|
-
|
439
438
|
def merge_set(send_set, channel)
|
440
439
|
return unless channel
|
441
440
|
channel = channel.name if channel.is_a?(Class) && channel.name
|
@@ -472,7 +471,7 @@ module Hyperstack
|
|
472
471
|
|
473
472
|
def send_message(header, channel, attribute_set, &block)
|
474
473
|
record = filter(@obj.react_serializer, attribute_set)
|
475
|
-
previous_changes = filter(@obj.
|
474
|
+
previous_changes = filter(@obj.previous_changes, attribute_set)
|
476
475
|
return if record.empty? && previous_changes.empty?
|
477
476
|
message = header.merge(
|
478
477
|
channel: channel_to_string(channel),
|
@@ -513,12 +512,12 @@ module Hyperstack
|
|
513
512
|
end
|
514
513
|
|
515
514
|
module ClassPolicyMethods
|
516
|
-
def
|
517
|
-
@
|
515
|
+
def hyperloop_internal_policy_object
|
516
|
+
@hyperloop_internal_policy_object ||= InternalClassPolicy.new(name || self)
|
518
517
|
end
|
519
518
|
InternalClassPolicy::EXPOSED_METHODS.each do |policy_method|
|
520
519
|
define_method policy_method do |*klasses, &block|
|
521
|
-
|
520
|
+
hyperloop_internal_policy_object.send policy_method, *klasses, &block
|
522
521
|
end unless respond_to? policy_method
|
523
522
|
end
|
524
523
|
end
|
@@ -529,10 +528,10 @@ module Hyperstack
|
|
529
528
|
extend ClassPolicyMethods
|
530
529
|
end
|
531
530
|
end
|
532
|
-
attr_accessor :
|
531
|
+
attr_accessor :hyperloop_internal_policy_object
|
533
532
|
InternalPolicy::EXPOSED_METHODS.each do |method|
|
534
533
|
define_method method do |*args, &block|
|
535
|
-
|
534
|
+
hyperloop_internal_policy_object.send method, *args, &block
|
536
535
|
end unless respond_to? method
|
537
536
|
end
|
538
537
|
define_method :initialize do |*args|
|
@@ -549,34 +548,34 @@ module Hyperstack
|
|
549
548
|
end
|
550
549
|
|
551
550
|
class Module
|
552
|
-
alias
|
551
|
+
alias pre_hyperloop_const_set const_set
|
553
552
|
|
554
553
|
def const_set(name, value)
|
555
|
-
|
556
|
-
|
554
|
+
pre_hyperloop_const_set(name, value).tap do
|
555
|
+
Hyperloop::PolicyAutoLoader.load(name, value)
|
557
556
|
end
|
558
557
|
end
|
559
558
|
end
|
560
559
|
|
561
560
|
class Class
|
562
561
|
|
563
|
-
alias
|
562
|
+
alias pre_hyperloop_inherited inherited
|
564
563
|
|
565
564
|
def inherited(child_class)
|
566
|
-
|
567
|
-
|
565
|
+
pre_hyperloop_inherited(child_class).tap do
|
566
|
+
Hyperloop::PolicyAutoLoader.load(child_class.name, child_class)
|
568
567
|
end
|
569
568
|
end
|
570
569
|
|
571
|
-
|
570
|
+
Hyperloop::ClassPolicyMethods.instance_methods.each do |method|
|
572
571
|
define_method method do |*args, &block|
|
573
572
|
if name.end_with?("Policy".freeze)
|
574
|
-
@
|
575
|
-
include
|
573
|
+
@hyperloop_internal_policy_object = Hyperloop::InternalClassPolicy.new(name.sub(/Policy$/,""))
|
574
|
+
include Hyperloop::PolicyMethods
|
576
575
|
send method, *args, &block
|
577
576
|
else
|
578
577
|
class << self
|
579
|
-
|
578
|
+
Hyperloop::ClassPolicyMethods.instance_methods.each do |method|
|
580
579
|
undef_method method
|
581
580
|
end
|
582
581
|
end
|
File without changes
|
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.
|
4
|
+
version: 1.0.0.lap28
|
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: 2018-05-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activerecord
|
@@ -31,14 +31,28 @@ dependencies:
|
|
31
31
|
requirements:
|
32
32
|
- - '='
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: 1.0.
|
34
|
+
version: 1.0.0.lap28
|
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.
|
41
|
+
version: 1.0.0.lap28
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: hyperloop-config
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - '='
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: 1.0.0.lap28
|
49
|
+
type: :runtime
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - '='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 1.0.0.lap28
|
42
56
|
- !ruby/object:Gem::Dependency
|
43
57
|
name: mutations
|
44
58
|
requirement: !ruby/object:Gem::Requirement
|
@@ -67,20 +81,6 @@ dependencies:
|
|
67
81
|
- - "~>"
|
68
82
|
- !ruby/object:Gem::Version
|
69
83
|
version: 0.3.1
|
70
|
-
- !ruby/object:Gem::Dependency
|
71
|
-
name: tty-table
|
72
|
-
requirement: !ruby/object:Gem::Requirement
|
73
|
-
requirements:
|
74
|
-
- - ">="
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version: '0'
|
77
|
-
type: :runtime
|
78
|
-
prerelease: false
|
79
|
-
version_requirements: !ruby/object:Gem::Requirement
|
80
|
-
requirements:
|
81
|
-
- - ">="
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
version: '0'
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
85
|
name: bundler
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
@@ -96,7 +96,7 @@ dependencies:
|
|
96
96
|
- !ruby/object:Gem::Version
|
97
97
|
version: '0'
|
98
98
|
- !ruby/object:Gem::Dependency
|
99
|
-
name:
|
99
|
+
name: database_cleaner
|
100
100
|
requirement: !ruby/object:Gem::Requirement
|
101
101
|
requirements:
|
102
102
|
- - ">="
|
@@ -110,33 +110,33 @@ dependencies:
|
|
110
110
|
- !ruby/object:Gem::Version
|
111
111
|
version: '0'
|
112
112
|
- !ruby/object:Gem::Dependency
|
113
|
-
name:
|
113
|
+
name: hyper-react
|
114
114
|
requirement: !ruby/object:Gem::Requirement
|
115
115
|
requirements:
|
116
|
-
- -
|
116
|
+
- - '='
|
117
117
|
- !ruby/object:Gem::Version
|
118
|
-
version:
|
118
|
+
version: 1.0.0.lap28
|
119
119
|
type: :development
|
120
120
|
prerelease: false
|
121
121
|
version_requirements: !ruby/object:Gem::Requirement
|
122
122
|
requirements:
|
123
|
-
- -
|
123
|
+
- - '='
|
124
124
|
- !ruby/object:Gem::Version
|
125
|
-
version:
|
125
|
+
version: 1.0.0.lap28
|
126
126
|
- !ruby/object:Gem::Dependency
|
127
127
|
name: hyper-spec
|
128
128
|
requirement: !ruby/object:Gem::Requirement
|
129
129
|
requirements:
|
130
130
|
- - '='
|
131
131
|
- !ruby/object:Gem::Version
|
132
|
-
version: 1.0.
|
132
|
+
version: 1.0.0.lap28
|
133
133
|
type: :development
|
134
134
|
prerelease: false
|
135
135
|
version_requirements: !ruby/object:Gem::Requirement
|
136
136
|
requirements:
|
137
137
|
- - '='
|
138
138
|
- !ruby/object:Gem::Version
|
139
|
-
version: 1.0.
|
139
|
+
version: 1.0.0.lap28
|
140
140
|
- !ruby/object:Gem::Dependency
|
141
141
|
name: mysql2
|
142
142
|
requirement: !ruby/object:Gem::Requirement
|
@@ -152,67 +152,67 @@ dependencies:
|
|
152
152
|
- !ruby/object:Gem::Version
|
153
153
|
version: '0'
|
154
154
|
- !ruby/object:Gem::Dependency
|
155
|
-
name: opal
|
155
|
+
name: opal
|
156
156
|
requirement: !ruby/object:Gem::Requirement
|
157
157
|
requirements:
|
158
|
-
- - "
|
158
|
+
- - ">="
|
159
159
|
- !ruby/object:Gem::Version
|
160
|
-
version: 0.
|
160
|
+
version: 0.11.0
|
161
|
+
- - "<"
|
162
|
+
- !ruby/object:Gem::Version
|
163
|
+
version: 0.12.0
|
161
164
|
type: :development
|
162
165
|
prerelease: false
|
163
166
|
version_requirements: !ruby/object:Gem::Requirement
|
164
167
|
requirements:
|
165
|
-
- - "
|
168
|
+
- - ">="
|
166
169
|
- !ruby/object:Gem::Version
|
167
|
-
version: 0.
|
170
|
+
version: 0.11.0
|
171
|
+
- - "<"
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: 0.12.0
|
168
174
|
- !ruby/object:Gem::Dependency
|
169
|
-
name: opal-
|
175
|
+
name: opal-browser
|
170
176
|
requirement: !ruby/object:Gem::Requirement
|
171
177
|
requirements:
|
172
|
-
- - "
|
173
|
-
- !ruby/object:Gem::Version
|
174
|
-
version: 0.9.4
|
175
|
-
- - "<"
|
178
|
+
- - "~>"
|
176
179
|
- !ruby/object:Gem::Version
|
177
|
-
version:
|
180
|
+
version: 0.2.0
|
178
181
|
type: :development
|
179
182
|
prerelease: false
|
180
183
|
version_requirements: !ruby/object:Gem::Requirement
|
181
184
|
requirements:
|
182
|
-
- - "
|
183
|
-
- !ruby/object:Gem::Version
|
184
|
-
version: 0.9.4
|
185
|
-
- - "<"
|
185
|
+
- - "~>"
|
186
186
|
- !ruby/object:Gem::Version
|
187
|
-
version:
|
187
|
+
version: 0.2.0
|
188
188
|
- !ruby/object:Gem::Dependency
|
189
|
-
name:
|
189
|
+
name: opal-rails
|
190
190
|
requirement: !ruby/object:Gem::Requirement
|
191
191
|
requirements:
|
192
|
-
- - "
|
192
|
+
- - "~>"
|
193
193
|
- !ruby/object:Gem::Version
|
194
|
-
version:
|
194
|
+
version: 0.9.4
|
195
195
|
type: :development
|
196
196
|
prerelease: false
|
197
197
|
version_requirements: !ruby/object:Gem::Requirement
|
198
198
|
requirements:
|
199
|
-
- - "
|
199
|
+
- - "~>"
|
200
200
|
- !ruby/object:Gem::Version
|
201
|
-
version:
|
201
|
+
version: 0.9.4
|
202
202
|
- !ruby/object:Gem::Dependency
|
203
|
-
name:
|
203
|
+
name: mini_racer
|
204
204
|
requirement: !ruby/object:Gem::Requirement
|
205
205
|
requirements:
|
206
|
-
- - "
|
206
|
+
- - "~>"
|
207
207
|
- !ruby/object:Gem::Version
|
208
|
-
version:
|
208
|
+
version: 0.1.15
|
209
209
|
type: :development
|
210
210
|
prerelease: false
|
211
211
|
version_requirements: !ruby/object:Gem::Requirement
|
212
212
|
requirements:
|
213
|
-
- - "
|
213
|
+
- - "~>"
|
214
214
|
- !ruby/object:Gem::Version
|
215
|
-
version:
|
215
|
+
version: 0.1.15
|
216
216
|
- !ruby/object:Gem::Dependency
|
217
217
|
name: puma
|
218
218
|
requirement: !ruby/object:Gem::Requirement
|
@@ -261,20 +261,14 @@ dependencies:
|
|
261
261
|
requirements:
|
262
262
|
- - ">="
|
263
263
|
- !ruby/object:Gem::Version
|
264
|
-
version:
|
265
|
-
- - "<"
|
266
|
-
- !ruby/object:Gem::Version
|
267
|
-
version: '7.0'
|
264
|
+
version: 4.0.0
|
268
265
|
type: :development
|
269
266
|
prerelease: false
|
270
267
|
version_requirements: !ruby/object:Gem::Requirement
|
271
268
|
requirements:
|
272
269
|
- - ">="
|
273
270
|
- !ruby/object:Gem::Version
|
274
|
-
version:
|
275
|
-
- - "<"
|
276
|
-
- !ruby/object:Gem::Version
|
277
|
-
version: '7.0'
|
271
|
+
version: 4.0.0
|
278
272
|
- !ruby/object:Gem::Dependency
|
279
273
|
name: rake
|
280
274
|
requirement: !ruby/object:Gem::Requirement
|
@@ -309,20 +303,6 @@ dependencies:
|
|
309
303
|
- - "<"
|
310
304
|
- !ruby/object:Gem::Version
|
311
305
|
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'
|
326
306
|
- !ruby/object:Gem::Dependency
|
327
307
|
name: rspec-rails
|
328
308
|
requirement: !ruby/object:Gem::Requirement
|
@@ -369,16 +349,16 @@ dependencies:
|
|
369
349
|
name: sqlite3
|
370
350
|
requirement: !ruby/object:Gem::Requirement
|
371
351
|
requirements:
|
372
|
-
- - "
|
352
|
+
- - ">="
|
373
353
|
- !ruby/object:Gem::Version
|
374
|
-
version:
|
354
|
+
version: '0'
|
375
355
|
type: :development
|
376
356
|
prerelease: false
|
377
357
|
version_requirements: !ruby/object:Gem::Requirement
|
378
358
|
requirements:
|
379
|
-
- - "
|
359
|
+
- - ">="
|
380
360
|
- !ruby/object:Gem::Version
|
381
|
-
version:
|
361
|
+
version: '0'
|
382
362
|
- !ruby/object:Gem::Dependency
|
383
363
|
name: timecop
|
384
364
|
requirement: !ruby/object:Gem::Requirement
|
@@ -403,13 +383,19 @@ extra_rdoc_files: []
|
|
403
383
|
files:
|
404
384
|
- ".gitignore"
|
405
385
|
- ".travis.yml"
|
386
|
+
- CODE_OF_CONDUCT.md
|
387
|
+
- DOCS-POLICIES.md
|
388
|
+
- DOCS.md
|
406
389
|
- Gemfile
|
390
|
+
- LICENSE.txt
|
391
|
+
- README.md
|
407
392
|
- Rakefile
|
393
|
+
- dciy.toml
|
408
394
|
- hyper-operation.gemspec
|
409
395
|
- lib/hyper-operation.rb
|
410
396
|
- lib/hyper-operation/api.rb
|
411
|
-
- lib/hyper-operation/async_sleep.rb
|
412
397
|
- lib/hyper-operation/boot.rb
|
398
|
+
- lib/hyper-operation/delay_and_interval.rb
|
413
399
|
- lib/hyper-operation/engine.rb
|
414
400
|
- lib/hyper-operation/exception.rb
|
415
401
|
- lib/hyper-operation/filters/acting_user.rb
|
@@ -429,22 +415,13 @@ files:
|
|
429
415
|
- lib/hyper-operation/transport/active_record.rb
|
430
416
|
- lib/hyper-operation/transport/client_drivers.rb
|
431
417
|
- lib/hyper-operation/transport/connection.rb
|
432
|
-
- lib/hyper-operation/transport/
|
433
|
-
- lib/hyper-operation/transport/
|
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
|
440
|
-
- lib/hyper-operation/transport/hyperstack.rb
|
441
|
-
- lib/hyper-operation/transport/hyperstack_controller.rb
|
418
|
+
- lib/hyper-operation/transport/hyperloop.rb
|
419
|
+
- lib/hyper-operation/transport/hyperloop_controller.rb
|
442
420
|
- lib/hyper-operation/transport/pluck.rb
|
443
421
|
- lib/hyper-operation/transport/policy.rb
|
444
|
-
- lib/hyper-operation/transport/policy_diagnostics.rb
|
445
422
|
- lib/hyper-operation/version.rb
|
446
|
-
- lib/sources/
|
447
|
-
homepage: http://ruby-
|
423
|
+
- lib/sources/hyperloop/pusher.js
|
424
|
+
homepage: http://ruby-hyperloop.org
|
448
425
|
licenses:
|
449
426
|
- MIT
|
450
427
|
metadata: {}
|
@@ -463,8 +440,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
463
440
|
- !ruby/object:Gem::Version
|
464
441
|
version: 1.3.1
|
465
442
|
requirements: []
|
466
|
-
|
443
|
+
rubyforge_project:
|
444
|
+
rubygems_version: 2.7.6
|
467
445
|
signing_key:
|
468
446
|
specification_version: 4
|
469
|
-
summary:
|
447
|
+
summary: Compose your business logic into isomorphic commands that sanitize and validate
|
448
|
+
input. Write safe, reusable, and maintainable code for Ruby and Rails app
|
470
449
|
test_files: []
|