pg_queue 0.0.4 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml ADDED
@@ -0,0 +1,7 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.8.7
4
+ - 1.9.2
5
+ - 1.9.3
6
+ - rbx-18mode
7
+ script: bundle exec rspec spec
data/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  Background jobs using PostgreSQL's LISTEN/NOTIFY
4
4
 
5
+ [![Build Status](https://secure.travis-ci.org/rafaelss/pg_queue.png)](http://travis-ci.org/rafaelss/pq_queue)
6
+
5
7
  ## Installation
6
8
 
7
9
  Add this line to your application's Gemfile:
data/lib/pg_queue/job.rb CHANGED
@@ -14,6 +14,8 @@ module PgQueue
14
14
  PgQueue.logger.debug("performing job #{@id}")
15
15
  klass.perform(*args)
16
16
  PgQueue.logger.debug("job #{@id} performed")
17
+
18
+ klass.after_perform(*args) if klass.respond_to?(:after_perform)
17
19
  end
18
20
  end
19
21
  end
@@ -1,3 +1,3 @@
1
1
  module PgQueue
2
- VERSION = "0.0.4"
2
+ VERSION = "0.1.0"
3
3
  end
data/pg_queue.gemspec CHANGED
@@ -17,6 +17,7 @@ Gem::Specification.new do |gem|
17
17
 
18
18
  gem.add_dependency "pg", "~> 0.12.2"
19
19
  gem.add_dependency "multi_json", "~> 1.0.4"
20
+ gem.add_development_dependency "rake", ">= 0.8.7"
20
21
 
21
22
  gem.add_development_dependency "rspec", "~> 2.8.0"
22
23
  end
@@ -1,22 +1,48 @@
1
1
  require "spec_helper"
2
2
 
3
- class MyQueue; end
4
-
5
3
  describe PgQueue::Job do
4
+ let(:queue_class) { Object.const_set("OrdinaryQueue", Class.new) }
5
+
6
6
  subject do
7
7
  described_class.new(
8
8
  "id" => 1,
9
- "class_name" => "MyQueue",
9
+ "class_name" => queue_class.name,
10
10
  "args" => MultiJson.encode([1, "two"])
11
11
  )
12
12
  end
13
13
 
14
+ after do
15
+ Object.send(:remove_const, queue_class.name.to_sym)
16
+ end
17
+
14
18
  its(:id) { should == 1 }
15
- its(:klass) { should == MyQueue }
19
+ its(:klass) { should == OrdinaryQueue }
16
20
  its(:args) { should == [1, "two"] }
17
21
 
18
22
  it "performs the job" do
19
23
  subject.klass.should_receive(:perform)
20
24
  subject.perform
21
25
  end
26
+
27
+ context "with no hooks" do
28
+ let(:queue_class) { Object.const_set("QueueWithNoAfterPerformHook", Class.new) }
29
+
30
+ it "should not try to call after perform hook" do
31
+ subject.klass.should_receive(:perform)
32
+ subject.klass.should_receive(:respond_to?).with(:after_perform).and_return(false)
33
+ subject.klass.should_receive(:after_perform).never
34
+ subject.perform
35
+ end
36
+ end
37
+
38
+ context "with hooks" do
39
+ let(:queue_class) { Object.const_set("QueueWithAfterPerformHook", Class.new) }
40
+
41
+ it "executes the after perform hook" do
42
+ subject.klass.should_receive(:perform)
43
+ subject.klass.should_receive(:respond_to?).with(:after_perform).and_return(true)
44
+ subject.klass.should_receive(:after_perform).once
45
+ subject.perform
46
+ end
47
+ end
22
48
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg_queue
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-30 00:00:00.000000000 Z
12
+ date: 2012-02-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: pg
16
- requirement: &70363119914140 !ruby/object:Gem::Requirement
16
+ requirement: &70187114559260 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.12.2
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70363119914140
24
+ version_requirements: *70187114559260
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: multi_json
27
- requirement: &70363119913640 !ruby/object:Gem::Requirement
27
+ requirement: &70187115687480 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,21 @@ dependencies:
32
32
  version: 1.0.4
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70363119913640
35
+ version_requirements: *70187115687480
36
+ - !ruby/object:Gem::Dependency
37
+ name: rake
38
+ requirement: &70187115687020 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: 0.8.7
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *70187115687020
36
47
  - !ruby/object:Gem::Dependency
37
48
  name: rspec
38
- requirement: &70363119913180 !ruby/object:Gem::Requirement
49
+ requirement: &70187115686560 !ruby/object:Gem::Requirement
39
50
  none: false
40
51
  requirements:
41
52
  - - ~>
@@ -43,7 +54,7 @@ dependencies:
43
54
  version: 2.8.0
44
55
  type: :development
45
56
  prerelease: false
46
- version_requirements: *70363119913180
57
+ version_requirements: *70187115686560
47
58
  description: Some experimentations with LISTEN/NOTIFY for background jobs
48
59
  email:
49
60
  - me@rafaelss.com
@@ -54,6 +65,7 @@ extra_rdoc_files: []
54
65
  files:
55
66
  - .gitignore
56
67
  - .rspec
68
+ - .travis.yml
57
69
  - Gemfile
58
70
  - LICENSE
59
71
  - README.md
@@ -82,15 +94,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
82
94
  - - ! '>='
83
95
  - !ruby/object:Gem::Version
84
96
  version: '0'
97
+ segments:
98
+ - 0
99
+ hash: 257008629282051808
85
100
  required_rubygems_version: !ruby/object:Gem::Requirement
86
101
  none: false
87
102
  requirements:
88
103
  - - ! '>='
89
104
  - !ruby/object:Gem::Version
90
105
  version: '0'
106
+ segments:
107
+ - 0
108
+ hash: 257008629282051808
91
109
  requirements: []
92
110
  rubyforge_project:
93
- rubygems_version: 1.8.10
111
+ rubygems_version: 1.8.15
94
112
  signing_key:
95
113
  specification_version: 3
96
114
  summary: Background jobs using PostgreSQL's LISTEN/NOTIFY