faye-redis-delayed 0.0.2 → 0.0.3

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: 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