resque-remote-namespace 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,25 +1,37 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- resque-remote-namespace (0.1.0)
4
+ resque-remote-namespace (0.2.0)
5
5
  resque (~> 1.0)
6
+ resque-scheduler
6
7
 
7
8
  GEM
8
9
  remote: http://rubygems.org/
9
10
  specs:
11
+ columnize (0.3.6)
12
+ debugger (1.5.0)
13
+ columnize (>= 0.3.1)
14
+ debugger-linecache (~> 1.2.0)
15
+ debugger-ruby_core_source (~> 1.2.0)
16
+ debugger-linecache (1.2.0)
17
+ debugger-ruby_core_source (1.2.0)
10
18
  diff-lcs (1.1.3)
11
- multi_json (1.5.0)
12
- rack (1.4.1)
13
- rack-protection (1.3.2)
19
+ multi_json (1.7.0)
20
+ rack (1.5.2)
21
+ rack-protection (1.5.0)
14
22
  rack
15
- redis (3.0.2)
23
+ redis (3.0.3)
16
24
  redis-namespace (1.2.1)
17
25
  redis (~> 3.0.0)
18
- resque (1.23.0)
26
+ resque (1.23.1)
19
27
  multi_json (~> 1.0)
20
28
  redis-namespace (~> 1.0)
21
29
  sinatra (>= 0.9.2)
22
30
  vegas (~> 0.1.2)
31
+ resque-scheduler (2.0.0)
32
+ redis (>= 2.0.1)
33
+ resque (>= 1.20.0)
34
+ rufus-scheduler
23
35
  rspec (2.8.0)
24
36
  rspec-core (~> 2.8.0)
25
37
  rspec-expectations (~> 2.8.0)
@@ -28,11 +40,14 @@ GEM
28
40
  rspec-expectations (2.8.0)
29
41
  diff-lcs (~> 1.1.2)
30
42
  rspec-mocks (2.8.0)
31
- sinatra (1.3.3)
32
- rack (~> 1.3, >= 1.3.6)
33
- rack-protection (~> 1.2)
34
- tilt (~> 1.3, >= 1.3.3)
35
- tilt (1.3.3)
43
+ rufus-scheduler (2.0.18)
44
+ tzinfo (>= 0.3.23)
45
+ sinatra (1.4.1)
46
+ rack (~> 1.5, >= 1.5.2)
47
+ rack-protection (~> 1.4)
48
+ tilt (~> 1.3, >= 1.3.4)
49
+ tilt (1.3.6)
50
+ tzinfo (0.3.37)
36
51
  vegas (0.1.11)
37
52
  rack (>= 1.0.0)
38
53
 
@@ -41,5 +56,6 @@ PLATFORMS
41
56
 
42
57
  DEPENDENCIES
43
58
  bundler (~> 1.0)
59
+ debugger
44
60
  resque-remote-namespace!
45
61
  rspec (~> 2.8)
@@ -1,2 +1,4 @@
1
1
  require 'resque'
2
- require 'resque-remote-namespace/remote_namespace'
2
+ require 'resque_scheduler'
3
+ require 'resque-remote-namespace/remote_namespace'
4
+ require 'resque-remote-namespace/support/shared_helpers'
@@ -1,41 +1,52 @@
1
1
  module Resque
2
- module Plugins
3
- module RemoteNamespace
4
-
5
- # Remote enqueue of a job by temporarily changing the Resque redis
2
+ module Plugins
3
+ module RemoteNamespace
4
+
5
+ # Remote enqueue of a job by temporarily changing the Resque redis
6
6
  # namespace.
7
7
  #
8
8
  # @param [ String ] queue The queue to enqueue the job to.
9
9
  # @param [ String ] namespace The namespace to enqueue the job to.
10
10
  # @param [ String ] klass The class name of the job to enqueue.
11
11
  # @param [ Array ] args The arguments to the job being remotely enqueued.
12
- def remote_enqueue_to(queue, namespace, klass, *args)
13
- original_namespace = Resque.redis.namespace
14
- Resque.redis.namespace = namespace
12
+ def remote_enqueue_to(queue, namespace, klass, *args)
13
+ from_namespace(namespace) do
14
+ Resque::Job.create(queue.to_sym, klass, *args)
15
+ end
16
+ end
17
+
18
+ # Remote enqueue of a job in the future by temporarily changing the
19
+ # Resque redis namespace.
20
+ #
21
+ # @param [ String ] number_of_seconds_from_now The number of seconds from
22
+ # now to enqueue the job at.
23
+ # @param [ String ] queue The queue to enqueue the job to.
24
+ # @param [ String ] namespace The namespace to enqueue the job to.
25
+ # @param [ String ] klass The class name of the job to enqueue.
26
+ # @param [ Array ] args The arguments to the job being remotely enqueued.
27
+ def remote_enqueue_to_in(number_of_seconds_from_now, queue, namespace, klass, *args)
28
+ time_to_enqueue = Time.now + number_of_seconds_from_now
15
29
 
16
- Resque::Job.create(queue.to_sym, klass, *args)
17
- ensure
18
- Resque.redis.namespace = original_namespace
19
- end
30
+ from_namespace(namespace) do
31
+ Resque.enqueue_at_with_queue(queue, time_to_enqueue, klass, *args)
32
+ end
33
+ end
20
34
 
21
- # Remote dequeue of a job by temporarily changin gthe Resque redis
22
- # namespace.
23
- #
24
- # @param [ String ] queue The queue to dequeue the job from.
25
- # @param [ String ] namespace The namespace to dequeue the job from.
26
- # @param [ String ] klass The class name of the job to enqueue.
27
- # @param [ Array ] args The arguments to the job being remotely dequeued.
28
- def remote_dequeue_from(queue, namespace, klass, *args)
29
- original_namespace = Resque.redis.namespace
30
- Resque.redis.namespace = namespace
35
+ # Remote dequeue of a job by temporarily changin gthe Resque redis
36
+ # namespace.
37
+ #
38
+ # @param [ String ] queue The queue to dequeue the job from.
39
+ # @param [ String ] namespace The namespace to dequeue the job from.
40
+ # @param [ String ] klass The class name of the job to enqueue.
41
+ # @param [ Array ] args The arguments to the job being remotely dequeued.
42
+ def remote_dequeue_from(queue, namespace, klass, *args)
43
+ from_namespace(namespace) do
44
+ Resque::Job.destroy(queue.to_sym, klass, *args)
45
+ end
46
+ end
47
+ end
48
+ end
31
49
 
32
- Resque::Job.destroy(queue.to_sym, klass, *args)
33
- ensure
34
- Resque.redis.namespace = original_namespace
35
- end
36
- end
37
- end
38
-
39
- # Pull the remote methods into the Resque module
40
- extend Plugins::RemoteNamespace
41
- end
50
+ # Pull the remote methods into the Resque module
51
+ extend Plugins::RemoteNamespace
52
+ end
@@ -0,0 +1,13 @@
1
+ # Run a block of code from a different namespace.
2
+ #
3
+ # @param [ String ] namespace The namespace to execute the block of code from.
4
+ # @param [ Proc ] block The block of code to execute from a different
5
+ # namespace.
6
+ def from_namespace(namespace, &block)
7
+ original_namespace = Resque.redis.namespace
8
+ Resque.redis.namespace = namespace
9
+
10
+ yield if block_given?
11
+ ensure
12
+ Resque.redis.namespace = original_namespace
13
+ end
@@ -1,7 +1,7 @@
1
1
  module Resque
2
2
  module Plugins
3
3
  module RemoteNamespace
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.0"
5
5
  end
6
6
  end
7
7
  end
@@ -26,8 +26,10 @@ Gem::Specification.new do |s|
26
26
  s.rubyforge_project = 'resque-remote-namespace'
27
27
 
28
28
  s.add_dependency 'resque', '~> 1.0'
29
+ s.add_dependency 'resque-scheduler'
29
30
 
30
31
  s.add_development_dependency 'bundler', '~> 1.0'
32
+ s.add_development_dependency 'debugger'
31
33
  s.add_development_dependency 'rspec', '~> 2.8'
32
34
 
33
35
  s.files = `git ls-files`.split("\n")
data/spec/remote_spec.rb CHANGED
@@ -50,6 +50,32 @@ describe Resque::Plugins::RemoteNamespace do
50
50
  end
51
51
  end
52
52
 
53
+ describe '#remote_enqueue_to_in' do
54
+ subject { Resque.remote_enqueue_to_in 5, queue, remote_namespace, 'TestJob', 'foo' }
55
+
56
+ it 'temporarily changes the Resque.redis.namespace' do
57
+ Resque.redis.should_receive(:namespace=)
58
+ .with('resque:foo')
59
+ .once
60
+
61
+ Resque.redis.should_receive(:namespace=)
62
+ .with('resque:bar')
63
+ .once
64
+
65
+ subject
66
+ end
67
+
68
+ it 'enqueues a job' do
69
+ expect {
70
+ subject
71
+ }.to change {
72
+ from_namespace remote_namespace do
73
+ Resque.delayed_queue_schedule_size
74
+ end
75
+ }.by(1)
76
+ end
77
+ end
78
+
53
79
  describe '#remote_dequeue_from' do
54
80
  subject { Resque.remote_dequeue_from queue, remote_namespace, 'TestJob', 'foo' }
55
81
 
data/spec/spec_helper.rb CHANGED
@@ -7,17 +7,3 @@ $: << File.expand_path('../lib', File.dirname(__FILE__))
7
7
  require 'resque-remote-namespace'
8
8
 
9
9
  Resque.redis.namespace = 'resque:foo'
10
-
11
- # Run a block of code from a different namespace.
12
- #
13
- # @param [ String ] namespace The namespace to execute the block of code from.
14
- # @param [ Proc ] block The block of code to execute from a different
15
- # namespace.
16
- def from_namespace(namespace, &block)
17
- original_namespace = Resque.redis.namespace
18
- Resque.redis.namespace = namespace
19
-
20
- yield if block_given?
21
- ensure
22
- Resque.redis.namespace = original_namespace
23
- end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resque-remote-namespace
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-03-12 00:00:00.000000000 Z
13
+ date: 2013-03-21 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: resque
@@ -28,6 +28,22 @@ dependencies:
28
28
  - - ~>
29
29
  - !ruby/object:Gem::Version
30
30
  version: '1.0'
31
+ - !ruby/object:Gem::Dependency
32
+ name: resque-scheduler
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
31
47
  - !ruby/object:Gem::Dependency
32
48
  name: bundler
33
49
  requirement: !ruby/object:Gem::Requirement
@@ -44,6 +60,22 @@ dependencies:
44
60
  - - ~>
45
61
  - !ruby/object:Gem::Version
46
62
  version: '1.0'
63
+ - !ruby/object:Gem::Dependency
64
+ name: debugger
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ type: :development
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
47
79
  - !ruby/object:Gem::Dependency
48
80
  name: rspec
49
81
  requirement: !ruby/object:Gem::Requirement
@@ -79,6 +111,7 @@ files:
79
111
  - Rakefile
80
112
  - lib/resque-remote-namespace.rb
81
113
  - lib/resque-remote-namespace/remote_namespace.rb
114
+ - lib/resque-remote-namespace/support/shared_helpers.rb
82
115
  - lib/resque-remote-namespace/version.rb
83
116
  - resque-remote-namespace.gemspec
84
117
  - spec/remote_spec.rb