pakyow-realtime 0.10.1 → 0.10.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a0ff21392040bb4adc29a3cdc1e7cc9b3bc8ebdd
4
- data.tar.gz: 4e34247a87e937bd1069aceb6dbb90b8d23ce2a0
3
+ metadata.gz: d3af56bba7d1aa3e3b121eb2b542d0dc4f85d35d
4
+ data.tar.gz: 33f0af0198c31f0b2b728d07a63635a2f85ad79a
5
5
  SHA512:
6
- metadata.gz: a5b1fe2d6ae6fd38bf06b6ad7ee2adba20dc681fb2335fae53b2d115768b144a0cd2302848be0581bd28be50ee2a90e3c69c32829221967db61343322f0f79fe
7
- data.tar.gz: efe74c79e7d4d82e5db1a05cbeb973308dd597e69309c806534dac5908a1205d7e32337999f0e84f695937302832c18005e7b79ade8d85c19300eeb25ba53766
6
+ metadata.gz: bf7e58a486cdef598237a63744c06069c9df16bf70c39d206d9bd18e2272e8a2035007ac3cd50d7dec232488ad89deb122d1b369a1230a229b2e6f09818dc968
7
+ data.tar.gz: 2ab01fe491a66614a021fefea6e674f68cf614fb970742b57ba2a3adca12c4dfae3716dc0c25c51ff3e3b147985730e0f657cd586fa784fdcd9da4e59aba7520
@@ -1,3 +1,10 @@
1
+ # 0.10.2 / 2015-11-15
2
+
3
+ * Adds ability to return only a partial in call-route response
4
+ * Fixes several bugs with the redis registry / subscriptions
5
+ * Fixes a bug causing qualifications to not match when using redis
6
+ * Bumps concurrent-ruby version to 1.0
7
+
1
8
  # 0.10.0 / 2015-10-19
2
9
 
3
10
  * Initial release
@@ -18,10 +18,14 @@ Pakyow::Realtime.handler :'call-route' do |message, session, response|
18
18
  res = app.process(env)
19
19
 
20
20
  container = message['container']
21
+ partial = message['partial']
22
+
23
+ composer = app.presenter.composer
21
24
 
22
25
  if container
23
- composer = app.presenter.composer
24
26
  body = composer.container(container.to_sym).includes(composer.partials).to_s
27
+ elsif partial
28
+ body = composer.partial(partial.to_sym).includes(composer.partials).to_s
25
29
  else
26
30
  body = res[2].body
27
31
  end
@@ -7,51 +7,42 @@ module Pakyow
7
7
  #
8
8
  # @api private
9
9
  class RedisSubscription
10
- include Concurrent::Async
10
+ SIGNAL_UNSUBSCRIBE = :unsubscribe
11
11
 
12
12
  def initialize
13
13
  @redis = ::Redis.new(Config.realtime.redis)
14
- @channels = []
15
-
16
- ObjectSpace.define_finalizer(self, self.class.finalize)
17
14
  end
18
15
 
19
- def self.finalize
20
- -> {
21
- unsubscribe
22
- @redis.quit
16
+ def subscribe(channels = [])
17
+ channels << signal_channel
18
+
19
+ Concurrent::Future.execute {
20
+ @redis.subscribe(*channels) do |on|
21
+ on.message do |channel, msg|
22
+ if channel == signal_channel
23
+ if msg == SIGNAL_UNSUBSCRIBE
24
+ @redis.unsubscribe
25
+ return
26
+ end
27
+ end
28
+
29
+ msg = JSON.parse(msg)
30
+
31
+ if msg.is_a?(Hash)
32
+ msg[:__propagated] = true
33
+ elsif msg.is_a?(Array)
34
+ msg << :__propagated
35
+ end
36
+
37
+ context = Pakyow::Realtime::Context.new(Pakyow.app)
38
+ context.push(msg, channel)
39
+ end
40
+ end
23
41
  }
24
42
  end
25
43
 
26
- def subscribe(channels)
27
- return if channels.empty?
28
- @channels = channels
29
-
30
- run
31
- end
32
-
33
- def unsubscribe
34
- return if @channels.empty?
35
- @redis.unsubscribe(*@channels)
36
- end
37
-
38
- private
39
-
40
- def run
41
- @redis.subscribe(*@channels) do |on|
42
- on.message do |channel, msg|
43
- msg = JSON.parse(msg)
44
-
45
- if msg.is_a?(Hash)
46
- msg[:__propagated] = true
47
- elsif msg.is_a?(Array)
48
- msg << :__propagated
49
- end
50
-
51
- context = Pakyow::Realtime::Context.new(Pakyow.app)
52
- context.push(msg, channel)
53
- end
54
- end
44
+ def signal_channel
45
+ "pw:#{object_id}:signal"
55
46
  end
56
47
  end
57
48
  end
@@ -71,12 +71,12 @@ module Pakyow
71
71
  # subscriber with the current channels.
72
72
  def resubscribe
73
73
  if @subscriber
74
- @subscriber.async.unsubscribe
74
+ Pakyow::Realtime.redis.publish(@subscriber.signal_channel, RedisSubscription::SIGNAL_UNSUBSCRIBE)
75
75
  else
76
76
  @subscriber = RedisSubscription.new
77
77
  end
78
78
 
79
- @subscriber.async.subscribe(@channels)
79
+ @subscriber.subscribe(@channels)
80
80
  end
81
81
 
82
82
  # Returns the key used to store channels.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pakyow-realtime
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.1
4
+ version: 0.10.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bryan Powell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-19 00:00:00.000000000 Z
11
+ date: 2015-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pakyow-support
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.10.1
19
+ version: 0.10.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.10.1
26
+ version: 0.10.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: pakyow-core
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 0.10.1
33
+ version: 0.10.2
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 0.10.1
40
+ version: 0.10.2
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: websocket_parser
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: '1.0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: '1.0'
83
83
  description: WebSockets and realtime channels for Pakyow
84
84
  email: bryan@metabahn.com
85
85
  executables: []
@@ -130,3 +130,4 @@ signing_key:
130
130
  specification_version: 4
131
131
  summary: Pakyow Realtime
132
132
  test_files: []
133
+ has_rdoc: