faye-redis-delayed 0.0.2 → 0.0.3

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: a969a08d29a772df03ab22d2e458b76af12c35b6
4
- data.tar.gz: 96fd1c85787c631167fcc972c9e951209509eb16
3
+ metadata.gz: 584e100400dc6fdebd0ca406ad9369aeb45268ab
4
+ data.tar.gz: dcd72092f051411d17d8b5f2eb9d6160d3d64eee
5
5
  SHA512:
6
- metadata.gz: 28907519b98799fdc2519ab7f74381d5bf09d9ab2189edce37c835e7d242d3c54e39d3addd318a50789c93dc6e346e2429c929e60e2155b84d831d728c876e55
7
- data.tar.gz: 5d9f0310e4c2bfecf07be6f7eb6fa4e7113dc6a9971f0e574b9e6f81c96a1dbdbe47979b05f6399be04fd220dcaff0ad76fa5f64b4e628035fd4cc113db2fd5d
6
+ metadata.gz: fdd8f550dea71be927bfa9a290214a0d7069f7438c27d29ac949e77e5ca6c5c2fe8dbcee8acbd3e11073d9719282622439ad17fcda2e6e868e2ab88cd0e4901a
7
+ data.tar.gz: caae74d881dc6dcb072e1215eae152e1c0aee07a260a4b6be098aba91c79f9d9ee7c5c2b8d9689d9d78f5f33b2903ed7ae132cf21433a3135790cbb743f3727b
data/README.md CHANGED
@@ -45,6 +45,19 @@ run server
45
45
  Additional options provided by `Faye::DelayedRedis`:
46
46
 
47
47
  * `:expire` — expire time in seconds, defaults to `60`
48
+ * `:delay_channels` - Array of channels that should be delayed
49
+
50
+ :delay_channels can be specified as strings or as regular expressions.
51
+ If something is given, then only channels matching one of the listed
52
+ patterns will be delayed. Without this argument, every channel is
53
+ delayed.
54
+
55
+ ```rb
56
+ :engine => {
57
+ :type => Faye::RedisDelayed,
58
+ :delay_channels => [/^\/queues_with_this_prefix/, "/this/one/queue"],
59
+ }
60
+ ```
48
61
 
49
62
  See the full list of [`Faye::Redis` engine options](https://github.com/faye/faye-redis-ruby).
50
63
 
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'faye-redis-delayed'
7
- spec.version = '0.0.2'
7
+ spec.version = '0.0.3'
8
8
  spec.authors = ['Dariusz Gertych']
9
9
  spec.email = ['dariusz.gertych@gmail.com']
10
10
  spec.description = %q{Delayed Redis engine backend for Faye}
@@ -29,28 +29,38 @@ module Faye
29
29
  keys = channels.map { |c| @ns + "/channels#{c}" }
30
30
 
31
31
  @redis.sunion(*keys) do |clients|
32
- if clients.empty?
32
+ if clients.empty? && delay_channel?(message["channel"])
33
33
  key = @ns + "/channels#{message["channel"]}/awaiting_messages"
34
34
  # store message in redis
35
35
  @redis.rpush(key, json_message)
36
36
  # Set expiration time to one minute
37
37
  @redis.expire(key, @options[:expire] || DEFAULT_EXPIRE)
38
- else
39
- clients.each do |client_id|
40
- queue = @ns + "/clients/#{client_id}/messages"
38
+ end
39
+
40
+ clients.each do |client_id|
41
+ queue = @ns + "/clients/#{client_id}/messages"
41
42
 
42
- @server.debug 'Queueing for client ?: ?', client_id, message
43
- @redis.rpush(queue, json_message)
44
- @redis.publish(@message_channel, client_id)
43
+ @server.debug 'Queueing for client ?: ?', client_id, message
44
+ @redis.rpush(queue, json_message)
45
+ @redis.publish(@message_channel, client_id)
45
46
 
46
- client_exists(client_id) do |exists|
47
- @redis.del(queue) unless exists
48
- end
47
+ client_exists(client_id) do |exists|
48
+ @redis.del(queue) unless exists
49
49
  end
50
50
  end
51
51
  end
52
52
 
53
53
  @server.trigger(:publish, message['clientId'], message['channel'], message['data'])
54
54
  end
55
+
56
+ private
57
+
58
+ def delay_channels
59
+ @delay_channels ||= Array(@options[:delay_channels]).flatten
60
+ end
61
+
62
+ def delay_channel?(channel)
63
+ delay_channels.empty? || delay_channels.any? { |pattern| pattern === channel }
64
+ end
55
65
  end
56
66
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faye-redis-delayed
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dariusz Gertych
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-13 00:00:00.000000000 Z
11
+ date: 2015-04-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faye
@@ -174,7 +174,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
174
174
  version: '0'
175
175
  requirements: []
176
176
  rubyforge_project:
177
- rubygems_version: 2.2.2
177
+ rubygems_version: 2.4.5
178
178
  signing_key:
179
179
  specification_version: 4
180
180
  summary: Delayed Redis engine backend for Faye