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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fad9b5cc25344895ee783f55c630d30b1d445abb
4
- data.tar.gz: 73520ca797c54e54e7b6ddb919448ced2814a873
3
+ metadata.gz: 3ea4626c7d1bb040d403f4da6b8b64021c81a29f
4
+ data.tar.gz: 639932af1572cfd2006295af882d23519e0c1f00
5
5
  SHA512:
6
- metadata.gz: f50e3e90e995d47e4dc85b47eddfe44edf1aac69050571663afb69c1e1467210048b4607ddaec9b8abf5b9a595b6a88292b860b8a7019fa0a32fcaba220258a4
7
- data.tar.gz: f8cfa4d6a52154aa26b6da60e7d0f149a38f6e5f2277f932487b3a1852b8894b93073ac48c745bcf1614f93eccfbc5fd0f1179c259fd3c98ee329b64951151e5
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.0'
43
+ s.add_dependency 'plissken', '~> 0.2'
40
44
  end
@@ -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
- params[resource_name.to_sym] = JSON.parse(m)
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
- params[resource_name.to_sym] = JSON.parse(m)
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)
@@ -1,3 +1,3 @@
1
1
  module Entangled
2
- VERSION = "1.4.0"
2
+ VERSION = "1.4.1"
3
3
  end
@@ -7,7 +7,9 @@ angular.module('entangledTest')
7
7
 
8
8
  $scope.create = function() {
9
9
  $scope.list.$save(function() {
10
- $scope.list = List.new();
10
+ $scope.$apply(function() {
11
+ $scope.list = List.new();
12
+ });
11
13
  });
12
14
  };
13
15
 
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.0
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: tubesock
126
+ name: rails
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '0.2'
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.2'
138
+ version: '4.0'
139
139
  - !ruby/object:Gem::Dependency
140
- name: rails
140
+ name: redis
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: '4.0'
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: '4.0'
152
+ version: '3.2'
153
153
  - !ruby/object:Gem::Dependency
154
- name: redis
154
+ name: tubesock
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: '3.2'
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: '3.2'
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.0
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.0
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: