entangled 0.0.12 → 0.0.13
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/lib/entangled/controller.rb +34 -15
- data/lib/entangled/version.rb +1 -1
- data/spec/spec_helper.rb +0 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: acd43415d53bc33e46fb87ca6e22b18398048798
|
4
|
+
data.tar.gz: 915a582c9aa65fcc3b55abac9a7977a97cccbf0c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 31b7560bb4a78329766122f4a58ba345f60f39364b9324ed0b915214d25504eaf33de5655d6ecb6aa620b35ea223d8a9e2c4f09ab7b9358fcb4e4bb64f277508
|
7
|
+
data.tar.gz: 341d2d3360966b6c9edf75561e76a0b5bf64a804f799ebb255d486b7263ae94010cb8a3cabed95562aa356b484572d9316f0e37a53ecd66c41c6083444ab143a
|
data/lib/entangled/controller.rb
CHANGED
@@ -4,10 +4,6 @@ require 'tubesock/hijack'
|
|
4
4
|
module Entangled
|
5
5
|
module Controller
|
6
6
|
include Tubesock::Hijack
|
7
|
-
|
8
|
-
module ClassMethods
|
9
|
-
|
10
|
-
end
|
11
7
|
|
12
8
|
module InstanceMethods
|
13
9
|
include Entangled::Helpers
|
@@ -31,6 +27,26 @@ module Entangled
|
|
31
27
|
resources_name.singularize
|
32
28
|
end
|
33
29
|
|
30
|
+
# Channel name for collection of resources, used in index
|
31
|
+
# action
|
32
|
+
def collection_channel
|
33
|
+
resources_name
|
34
|
+
end
|
35
|
+
|
36
|
+
# Channel name for single resource, used in show action
|
37
|
+
def member_channel
|
38
|
+
instance = member
|
39
|
+
"#{resources_name}/#{instance.to_param}"
|
40
|
+
end
|
41
|
+
|
42
|
+
def collection
|
43
|
+
instance_variable_get(:"@#{resources_name}")
|
44
|
+
end
|
45
|
+
|
46
|
+
def member
|
47
|
+
instance_variable_get(:"@#{resource_name}")
|
48
|
+
end
|
49
|
+
|
34
50
|
# Broadcast events to every connected client
|
35
51
|
def broadcast(&block)
|
36
52
|
# Use hijack to handle sockets
|
@@ -60,16 +76,17 @@ module Entangled
|
|
60
76
|
# ...then @tacos will be broadcast to all connected
|
61
77
|
# clients. The variable name, in this example,
|
62
78
|
# has to be "@tacos"
|
63
|
-
if
|
79
|
+
if collection
|
64
80
|
redis_thread = Thread.new do
|
65
|
-
redis.subscribe
|
81
|
+
redis.subscribe collection_channel do |on|
|
82
|
+
# Broadcast messages to all connected clients
|
66
83
|
on.message do |channel, message|
|
67
84
|
tubesock.send_data message
|
68
85
|
end
|
69
86
|
|
70
|
-
#
|
87
|
+
# Send message to whoever just subscribed
|
71
88
|
tubesock.send_data({
|
72
|
-
resources:
|
89
|
+
resources: collection
|
73
90
|
}.to_json)
|
74
91
|
end
|
75
92
|
end
|
@@ -98,15 +115,18 @@ module Entangled
|
|
98
115
|
|
99
116
|
# ...then @taco will be broadcast to all connected clients.
|
100
117
|
# The variable name, in this example, has to be "@taco"
|
101
|
-
if
|
118
|
+
if member
|
102
119
|
redis_thread = Thread.new do
|
103
|
-
redis.subscribe
|
120
|
+
redis.subscribe member_channel do |on|
|
121
|
+
# Broadcast messages to all connected clients
|
104
122
|
on.message do |channel, message|
|
105
123
|
tubesock.send_data message
|
106
124
|
end
|
107
125
|
|
108
|
-
#
|
109
|
-
tubesock.send_data({
|
126
|
+
# Send message to whoever just subscribed
|
127
|
+
tubesock.send_data({
|
128
|
+
resource: member
|
129
|
+
}.to_json)
|
110
130
|
end
|
111
131
|
end
|
112
132
|
|
@@ -122,7 +142,7 @@ module Entangled
|
|
122
142
|
# happens in the model's callback
|
123
143
|
when 'create'
|
124
144
|
tubesock.onmessage do |m|
|
125
|
-
params[resource_name.to_sym] = JSON.parse(m)
|
145
|
+
params[resource_name.to_sym] = JSON.parse(m)
|
126
146
|
yield
|
127
147
|
end
|
128
148
|
|
@@ -132,7 +152,7 @@ module Entangled
|
|
132
152
|
# id, created_at, and updated_at should not be included in params.
|
133
153
|
when 'update'
|
134
154
|
tubesock.onmessage do |m|
|
135
|
-
params[resource_name.to_sym] = JSON.parse(m)
|
155
|
+
params[resource_name.to_sym] = JSON.parse(m)
|
136
156
|
yield
|
137
157
|
end
|
138
158
|
|
@@ -150,7 +170,6 @@ module Entangled
|
|
150
170
|
end
|
151
171
|
|
152
172
|
def self.included(receiver)
|
153
|
-
receiver.extend ClassMethods
|
154
173
|
receiver.send :include, InstanceMethods
|
155
174
|
end
|
156
175
|
end
|
data/lib/entangled/version.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: entangled
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dennis Charles Hackethal
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-03-
|
11
|
+
date: 2015-03-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -9830,6 +9830,7 @@ files:
|
|
9830
9830
|
- spec/dummy/public/test/controllers/messages_test.js
|
9831
9831
|
- spec/dummy/public/views/messages/index.html
|
9832
9832
|
- spec/dummy/public/views/messages/show.html
|
9833
|
+
- spec/dummy/tmp/pids/server.pid
|
9833
9834
|
- spec/models/inclusion_exclusion_spec.rb
|
9834
9835
|
- spec/models/message_spec.rb
|
9835
9836
|
- spec/routing/inclusion_exclusion_routing_spec.rb
|
@@ -19515,6 +19516,7 @@ test_files:
|
|
19515
19516
|
- spec/dummy/public/views/messages/show.html
|
19516
19517
|
- spec/dummy/Rakefile
|
19517
19518
|
- spec/dummy/README.rdoc
|
19519
|
+
- spec/dummy/tmp/pids/server.pid
|
19518
19520
|
- spec/models/inclusion_exclusion_spec.rb
|
19519
19521
|
- spec/models/message_spec.rb
|
19520
19522
|
- spec/routing/inclusion_exclusion_routing_spec.rb
|