actioncable 5.0.0.rc2 → 5.0.0
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/CHANGELOG.md +5 -20
- data/README.md +68 -0
- data/lib/action_cable/channel/periodic_timers.rb +1 -3
- data/lib/action_cable/gem_version.rb +1 -1
- data/lib/action_cable/server/worker.rb +8 -4
- data/lib/assets/compiled/action_cable.js +8 -0
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 78aa5e9accaff5552c65b7c806c3d313b4910278
|
4
|
+
data.tar.gz: 58b3076e4b69b419e845efc1ff101e4b02ca4a4c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 46536e637511c425470ed54cb722ef9f99966714fdef30c56dbddb5c851fa01036e09b33020e116e96d593159ecf4d0315ab6f7775b60577aca17b03e85e0918
|
7
|
+
data.tar.gz: a4ae8816e81c14050d369735648d80185b224ecc86bf9f9133e6d6f1d071046d66a2e2890bf23ab1b44f724266d5f354851fab3c1393782bb17725fa37112b33
|
data/CHANGELOG.md
CHANGED
@@ -1,19 +1,10 @@
|
|
1
|
-
## Rails 5.0.0
|
1
|
+
## Rails 5.0.0 (June 30, 2016) ##
|
2
2
|
|
3
|
+
* Fix development reloading support: new cable connections are now correctly
|
4
|
+
dispatched to the reloaded channel class, instead of using a cached reference
|
5
|
+
to the originally-loaded version.
|
3
6
|
|
4
|
-
*
|
5
|
-
dispatched to the reloaded channel class, instead of using a cached reference
|
6
|
-
to the originally-loaded version.
|
7
|
-
|
8
|
-
*Matthew Draper*
|
9
|
-
|
10
|
-
|
11
|
-
## Rails 5.0.0.rc1 (May 06, 2016) ##
|
12
|
-
|
13
|
-
* No changes.
|
14
|
-
|
15
|
-
|
16
|
-
## Rails 5.0.0.beta4 (April 27, 2016) ##
|
7
|
+
*Matthew Draper*
|
17
8
|
|
18
9
|
* WebSocket protocol negotiation.
|
19
10
|
|
@@ -58,8 +49,6 @@
|
|
58
49
|
|
59
50
|
*Jay Hayes*
|
60
51
|
|
61
|
-
## Rails 5.0.0.beta3 (February 24, 2016) ##
|
62
|
-
|
63
52
|
* Added `em_redis_connector` and `redis_connector` to
|
64
53
|
`ActionCable::SubscriptionAdapter::EventedRedis` and added `redis_connector`
|
65
54
|
to `ActionCable::SubscriptionAdapter::Redis`, so you can overwrite with your
|
@@ -68,8 +57,6 @@
|
|
68
57
|
|
69
58
|
*DHH*
|
70
59
|
|
71
|
-
## Rails 5.0.0.beta2 (February 01, 2016) ##
|
72
|
-
|
73
60
|
* Support PostgreSQL pubsub adapter.
|
74
61
|
|
75
62
|
*Jon Moss*
|
@@ -91,8 +78,6 @@
|
|
91
78
|
|
92
79
|
*Jon Moss*
|
93
80
|
|
94
|
-
## Rails 5.0.0.beta1 (December 18, 2015) ##
|
95
|
-
|
96
81
|
* Added to Rails!
|
97
82
|
|
98
83
|
*DHH*
|
data/README.md
CHANGED
@@ -455,6 +455,74 @@ with all the popular application servers -- Unicorn, Puma and Passenger.
|
|
455
455
|
Action Cable does not work with WEBrick, because WEBrick does not support the
|
456
456
|
Rack socket hijacking API.
|
457
457
|
|
458
|
+
## Frontend assets
|
459
|
+
|
460
|
+
Action Cable's frontend assets are distributed through two channels: the
|
461
|
+
official gem and npm package, both titled `actioncable`.
|
462
|
+
|
463
|
+
### Gem usage
|
464
|
+
|
465
|
+
Through the `actioncable` gem, Action Cable's frontend assets are
|
466
|
+
available through the Rails Asset Pipeline. Create a `cable.js` or
|
467
|
+
`cable.coffee` file (this is automatically done for you with Rails
|
468
|
+
generators), and then simply require the assets:
|
469
|
+
|
470
|
+
In JavaScript...
|
471
|
+
|
472
|
+
```javascript
|
473
|
+
//= require action_cable
|
474
|
+
```
|
475
|
+
|
476
|
+
... and in CoffeeScript:
|
477
|
+
|
478
|
+
```coffeescript
|
479
|
+
#= require action_cable
|
480
|
+
```
|
481
|
+
|
482
|
+
### npm usage
|
483
|
+
|
484
|
+
In addition to being available through the `actioncable` gem, Action Cable's
|
485
|
+
frontend JS assets are also bundled in an officially supported npm module,
|
486
|
+
intended for usage in standalone frontend applications that communicate with a
|
487
|
+
Rails application. A common use case for this could be if you have a decoupled
|
488
|
+
frontend application written in React, Ember.js, etc. and want to add real-time
|
489
|
+
WebSocket functionality.
|
490
|
+
|
491
|
+
### Installation
|
492
|
+
|
493
|
+
```
|
494
|
+
npm install actioncable --save
|
495
|
+
```
|
496
|
+
|
497
|
+
### Usage
|
498
|
+
|
499
|
+
The `ActionCable` constant is available as a `require`-able module, so
|
500
|
+
you only have to require the package to gain access to the API that is
|
501
|
+
provided.
|
502
|
+
|
503
|
+
In JavaScript...
|
504
|
+
|
505
|
+
```javascript
|
506
|
+
ActionCable = require('actioncable')
|
507
|
+
|
508
|
+
var cable = ActionCable.createConsumer('wss://RAILS-API-PATH.com/cable')
|
509
|
+
|
510
|
+
cable.subscriptions.create('AppearanceChannel', {
|
511
|
+
// normal channel code goes here...
|
512
|
+
});
|
513
|
+
```
|
514
|
+
|
515
|
+
and in CoffeeScript...
|
516
|
+
|
517
|
+
```coffeescript
|
518
|
+
ActionCable = require('actioncable')
|
519
|
+
|
520
|
+
cable = ActionCable.createConsumer('wss://RAILS-API-PATH.com/cable')
|
521
|
+
|
522
|
+
cable.subscriptions.create 'AppearanceChannel',
|
523
|
+
# normal channel code goes here...
|
524
|
+
```
|
525
|
+
|
458
526
|
## License
|
459
527
|
|
460
528
|
Action Cable is released under the MIT license:
|
@@ -64,9 +64,7 @@ module ActionCable
|
|
64
64
|
|
65
65
|
def start_periodic_timer(callback, every:)
|
66
66
|
connection.server.event_loop.timer every do
|
67
|
-
connection.worker_pool.
|
68
|
-
instance_exec(&callback)
|
69
|
-
end
|
67
|
+
connection.worker_pool.async_exec self, connection: connection, &callback
|
70
68
|
end
|
71
69
|
end
|
72
70
|
|
@@ -42,16 +42,20 @@ module ActionCable
|
|
42
42
|
self.connection = nil
|
43
43
|
end
|
44
44
|
|
45
|
-
def
|
45
|
+
def async_exec(receiver, *args, connection:, &block)
|
46
|
+
async_invoke receiver, :instance_exec, *args, connection: connection, &block
|
47
|
+
end
|
48
|
+
|
49
|
+
def async_invoke(receiver, method, *args, connection: receiver, &block)
|
46
50
|
@executor.post do
|
47
|
-
invoke(receiver, method, *args, connection: connection)
|
51
|
+
invoke(receiver, method, *args, connection: connection, &block)
|
48
52
|
end
|
49
53
|
end
|
50
54
|
|
51
|
-
def invoke(receiver, method, *args, connection
|
55
|
+
def invoke(receiver, method, *args, connection:, &block)
|
52
56
|
work(connection) do
|
53
57
|
begin
|
54
|
-
receiver.send method, *args
|
58
|
+
receiver.send method, *args, &block
|
55
59
|
rescue Exception => e
|
56
60
|
logger.error "There was an exception - #{e.class}(#{e.message})"
|
57
61
|
logger.error e.backtrace.join("\n")
|
@@ -52,6 +52,14 @@
|
|
52
52
|
}
|
53
53
|
};
|
54
54
|
|
55
|
+
if (typeof window !== "undefined" && window !== null) {
|
56
|
+
window.ActionCable = this.ActionCable;
|
57
|
+
}
|
58
|
+
|
59
|
+
if (typeof module !== "undefined" && module !== null) {
|
60
|
+
module.exports = this.ActionCable;
|
61
|
+
}
|
62
|
+
|
55
63
|
}).call(this);
|
56
64
|
(function() {
|
57
65
|
var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: actioncable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.0.0
|
4
|
+
version: 5.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pratik Naik
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-06-
|
12
|
+
date: 2016-06-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: actionpack
|
@@ -17,14 +17,14 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - '='
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 5.0.0
|
20
|
+
version: 5.0.0
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - '='
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: 5.0.0
|
27
|
+
version: 5.0.0
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: nio4r
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -145,9 +145,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
145
145
|
version: 2.2.2
|
146
146
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
147
147
|
requirements:
|
148
|
-
- - "
|
148
|
+
- - ">="
|
149
149
|
- !ruby/object:Gem::Version
|
150
|
-
version:
|
150
|
+
version: '0'
|
151
151
|
requirements: []
|
152
152
|
rubyforge_project:
|
153
153
|
rubygems_version: 2.6.4
|