entangled 1.4.0 → 1.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +7 -1
- data/entangled.gemspec +6 -2
- data/lib/entangled/controller.rb +10 -2
- data/lib/entangled/version.rb +1 -1
- data/spec/dummy/public/app/controllers/lists.js +3 -1
- metadata +12 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3ea4626c7d1bb040d403f4da6b8b64021c81a29f
|
4
|
+
data.tar.gz: 639932af1572cfd2006295af882d23519e0c1f00
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 034e96b2cb4f1748c4ef748448974e1b54fd2fcaa7db7ff469eae55d45365ec5cee0da26daaacae459b2d903bc698b1e610547bfd56d52e61e2ba904acfdf196
|
7
|
+
data.tar.gz: 55d59ceeeddb3277e3d971db4926b10270e0e591062ce738b4dc2b9f7db8fc39bba89cf56b257bde97ff0542f342e59f353d793b192e5ff4f5a8bd11b45028ed
|
data/README.md
CHANGED
@@ -150,6 +150,12 @@ class MessagesController < ApplicationController
|
|
150
150
|
end
|
151
151
|
end
|
152
152
|
|
153
|
+
# def custom_action
|
154
|
+
# broadcast do
|
155
|
+
# # do whatever
|
156
|
+
# end
|
157
|
+
# end
|
158
|
+
|
153
159
|
private
|
154
160
|
def message_params
|
155
161
|
# params logic here
|
@@ -165,6 +171,7 @@ Note the following:
|
|
165
171
|
- The instance variables are sent to clients as stringified JSON
|
166
172
|
- Strong parameters are expected
|
167
173
|
- The path to your controllers' index action has to match the model's channel for the collection, and the path to your controller's show action has to match the model's channel for a single member (which it will automatically if you stay RESTful)
|
174
|
+
- You can add custom actions on top of the five RESTful ones; JSON sent through sockets is available in the params hash
|
168
175
|
|
169
176
|
### Server
|
170
177
|
|
@@ -277,7 +284,6 @@ The gem relies heavily on convention over configuration and currently only works
|
|
277
284
|
## Development Priorities
|
278
285
|
The following features are to be implemented next:
|
279
286
|
|
280
|
-
- Parse tubesock message `m` if available and assign to params in other controller actions before yield
|
281
287
|
- Make broadcast method non-blocking using [concurrent-ruby](https://github.com/ruby-concurrency/concurrent-ruby); update Readme and repo description accordingly
|
282
288
|
- Add compatibility table for Ruby/Angular/JS versions
|
283
289
|
- Make prefix of create path `create_message` instead of `create_messages`
|
data/entangled.gemspec
CHANGED
@@ -28,13 +28,17 @@ Gem::Specification.new do |s|
|
|
28
28
|
s.add_development_dependency 'byebug', '~> 3.5'
|
29
29
|
s.add_development_dependency 'bourne', '~> 1.6'
|
30
30
|
s.add_development_dependency 'puma', '~> 2.11'
|
31
|
-
s.add_dependency 'tubesock', '~> 0.2'
|
32
31
|
s.add_dependency 'rails', '~> 4.0'
|
32
|
+
|
33
|
+
# To handle channels
|
33
34
|
s.add_dependency 'redis', '~> 3.2'
|
34
35
|
|
36
|
+
# To handle websockets
|
37
|
+
s.add_dependency 'tubesock', '~> 0.2'
|
38
|
+
|
35
39
|
# To convert hashes from snake case to camel case
|
36
40
|
s.add_dependency 'awrence', '~> 0.1'
|
37
41
|
|
38
42
|
# To convert hashes from camel case to snake case
|
39
|
-
s.add_dependency 'plissken', '~> 0.2
|
43
|
+
s.add_dependency 'plissken', '~> 0.2'
|
40
44
|
end
|
data/lib/entangled/controller.rb
CHANGED
@@ -156,7 +156,7 @@ module Entangled
|
|
156
156
|
# happens in the model's callback
|
157
157
|
when 'create'
|
158
158
|
tubesock.onmessage do |m|
|
159
|
-
|
159
|
+
set_resource_params(m)
|
160
160
|
yield
|
161
161
|
|
162
162
|
# Send resource that was just created back to client. The resource
|
@@ -177,7 +177,7 @@ module Entangled
|
|
177
177
|
# with attributes sent to the socket
|
178
178
|
when 'update'
|
179
179
|
tubesock.onmessage do |m|
|
180
|
-
|
180
|
+
set_resource_params(m)
|
181
181
|
yield
|
182
182
|
|
183
183
|
# Send resource that was just updated back to client. The resource
|
@@ -212,6 +212,10 @@ module Entangled
|
|
212
212
|
# of the socket. Other custom actions can be added through this
|
213
213
|
else
|
214
214
|
tubesock.onmessage do |m|
|
215
|
+
# If message was sent, attach to params (rescue exception if
|
216
|
+
# message not valid JSON or message not present)
|
217
|
+
params.merge!(JSON.parse(m)) rescue nil
|
218
|
+
|
215
219
|
yield
|
216
220
|
|
217
221
|
close_db_connection
|
@@ -219,6 +223,10 @@ module Entangled
|
|
219
223
|
end
|
220
224
|
end
|
221
225
|
end
|
226
|
+
|
227
|
+
def set_resource_params(message_from_socket)
|
228
|
+
params[resource_name.to_sym] = JSON.parse(message_from_socket)
|
229
|
+
end
|
222
230
|
end
|
223
231
|
|
224
232
|
def self.included(receiver)
|
data/lib/entangled/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: entangled
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dennis Charles Hackethal
|
@@ -123,47 +123,47 @@ dependencies:
|
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '2.11'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
126
|
+
name: rails
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
129
|
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: '0
|
131
|
+
version: '4.0'
|
132
132
|
type: :runtime
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version: '0
|
138
|
+
version: '4.0'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
140
|
+
name: redis
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
143
|
- - "~>"
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version: '
|
145
|
+
version: '3.2'
|
146
146
|
type: :runtime
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
150
|
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version: '
|
152
|
+
version: '3.2'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
154
|
+
name: tubesock
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
157
|
- - "~>"
|
158
158
|
- !ruby/object:Gem::Version
|
159
|
-
version: '
|
159
|
+
version: '0.2'
|
160
160
|
type: :runtime
|
161
161
|
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
164
|
- - "~>"
|
165
165
|
- !ruby/object:Gem::Version
|
166
|
-
version: '
|
166
|
+
version: '0.2'
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
168
|
name: awrence
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -184,14 +184,14 @@ dependencies:
|
|
184
184
|
requirements:
|
185
185
|
- - "~>"
|
186
186
|
- !ruby/object:Gem::Version
|
187
|
-
version: 0.2
|
187
|
+
version: '0.2'
|
188
188
|
type: :runtime
|
189
189
|
prerelease: false
|
190
190
|
version_requirements: !ruby/object:Gem::Requirement
|
191
191
|
requirements:
|
192
192
|
- - "~>"
|
193
193
|
- !ruby/object:Gem::Version
|
194
|
-
version: 0.2
|
194
|
+
version: '0.2'
|
195
195
|
description: Makes Rails real time through websockets as a gem in the backend and
|
196
196
|
as an Angular library in the front end.
|
197
197
|
email:
|