pg_queue 0.0.4 → 0.1.0

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