qu-mongoid 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.travis.yml +6 -0
- data/Gemfile +2 -9
- data/README.md +2 -0
- data/lib/qu-mongoid/version.rb +1 -1
- data/lib/qu/backend/mongoid.rb +12 -1
- data/qu-mongoid.gemspec +4 -1
- data/spec/qu/backend/mongoid_spec.rb +31 -22
- data/spec/spec_helper.rb +1 -1
- metadata +53 -35
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 7140f4126b6506d6e860cb53dc541667e50675d8
|
4
|
+
data.tar.gz: ca5e0b3a506f94d0a103842f46a971d18a6f6e2b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1b718555a14375b1d435d47ee11c1d3d160563fbec7a5e8079525489b394e1fc09aaa08ee7399f3ee92b5faf4994d8f24a5b71d6cb4c7a6c8f3104d9e3e57afd
|
7
|
+
data.tar.gz: 417bfd942886d26510d16d01fcd12c73108031c848e139626ae8a8e67e4b2835eb1569e88c982e574870b1f8eac671ba87e570a505d1dd94001b7fa668bc40ba
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
@@ -1,15 +1,8 @@
|
|
1
|
-
source
|
1
|
+
source "http://rubygems.org"
|
2
2
|
|
3
3
|
# Specify your gem's dependencies in qu-mongoid.gemspec
|
4
4
|
gemspec
|
5
5
|
|
6
6
|
group :test do
|
7
7
|
gem 'SystemTimer', :platform => :mri_18
|
8
|
-
|
9
|
-
gem 'ruby-debug', :platform => :jruby
|
10
|
-
gem 'debugger', :platform => :mri_19
|
11
|
-
gem 'rake'
|
12
|
-
gem 'rspec', '~> 2.0'
|
13
|
-
gem 'guard-rspec'
|
14
|
-
gem 'guard-bundler'
|
15
|
-
end
|
8
|
+
end
|
data/README.md
CHANGED
@@ -20,6 +20,8 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
$ gem install qu-mongoid
|
22
22
|
|
23
|
+
Tested in Ruby 1.9.3, 2.0.0, JRuby (1.9 mode), and Rubinius (1.9 mode). Ruby 1.8.7 is not supported because Mongoid 3 only supports Ruby 1.9+.
|
24
|
+
|
23
25
|
## Why not just use the Mongo backend?
|
24
26
|
|
25
27
|
Starting with version 3, Mongoid uses its own mongoDB driver (Moped) instead of the official 10gen ruby driver (mongo). To avoid loading both drivers, I ported the Mongo backend to Mongoid/Moped.
|
data/lib/qu-mongoid/version.rb
CHANGED
data/lib/qu/backend/mongoid.rb
CHANGED
@@ -64,8 +64,19 @@ Example:
|
|
64
64
|
jobs(queue).find.count
|
65
65
|
end
|
66
66
|
|
67
|
+
if defined?(::Moped::BSON::ObjectId)
|
68
|
+
def new_id
|
69
|
+
::Moped::BSON::ObjectId.new
|
70
|
+
end
|
71
|
+
else
|
72
|
+
def new_id
|
73
|
+
::BSON::ObjectId.new
|
74
|
+
end
|
75
|
+
end
|
76
|
+
private :new_id
|
77
|
+
|
67
78
|
def enqueue(payload)
|
68
|
-
payload.id =
|
79
|
+
payload.id = new_id
|
69
80
|
jobs(payload.queue).insert({:_id => payload.id, :klass => payload.klass.to_s, :args => payload.args})
|
70
81
|
self[:queues].where({:name => payload.queue}).upsert({:name => payload.queue})
|
71
82
|
logger.debug { "Enqueued job #{payload}" }
|
data/qu-mongoid.gemspec
CHANGED
@@ -14,6 +14,9 @@ Gem::Specification.new do |s|
|
|
14
14
|
s.files = `git ls-files`.split("\n")
|
15
15
|
s.require_paths = ["lib"]
|
16
16
|
|
17
|
-
s.add_dependency 'mongoid', '
|
17
|
+
s.add_dependency 'mongoid', '>= 3.0'
|
18
18
|
s.add_dependency 'qu'
|
19
|
+
|
20
|
+
s.add_development_dependency 'rspec', '~> 2.14'
|
21
|
+
s.add_development_dependency 'rake'
|
19
22
|
end
|
@@ -5,27 +5,27 @@ describe Qu::Backend::Mongoid do
|
|
5
5
|
it_should_behave_like 'a backend'
|
6
6
|
|
7
7
|
describe 'connection' do
|
8
|
-
it '
|
8
|
+
it 'uses a separate connection in each thread' do
|
9
9
|
backend = subject
|
10
10
|
connection = subject.connection
|
11
11
|
separate_connection = false
|
12
12
|
Thread.new do
|
13
13
|
separate_connection = (backend.connection != connection)
|
14
14
|
end.join
|
15
|
-
separate_connection.
|
15
|
+
expect(separate_connection).to be true
|
16
16
|
end
|
17
17
|
|
18
|
-
it '
|
19
|
-
subject.connection.
|
20
|
-
subject.connection.options[:database].
|
18
|
+
it 'defaults to the qu database' do
|
19
|
+
expect(subject.connection).to be_instance_of(Moped::Session)
|
20
|
+
expect(subject.connection.options[:database]).to eq('qu')
|
21
21
|
end
|
22
22
|
|
23
|
-
it '
|
24
|
-
subject.session.
|
25
|
-
subject.connection.
|
23
|
+
it 'defaults to the :default session' do
|
24
|
+
expect(subject.session).to eq(:default)
|
25
|
+
expect(subject.connection).to eq(::Mongoid::Sessions.with_name(subject.session))
|
26
26
|
end
|
27
27
|
|
28
|
-
it '
|
28
|
+
it 'has a configurable session that works with threads' do
|
29
29
|
subject.connection = nil
|
30
30
|
|
31
31
|
::Mongoid.sessions[:qu] = {:uri => 'mongodb://127.0.0.1:27017/quspec', :max_retries_on_connection_failure => 4}
|
@@ -33,29 +33,38 @@ describe Qu::Backend::Mongoid do
|
|
33
33
|
Qu.configure do |c|
|
34
34
|
c.backend.session = :qu
|
35
35
|
end
|
36
|
-
subject.connection.
|
36
|
+
expect(subject.connection).to eq(::Mongoid::Sessions.with_name(:qu))
|
37
37
|
|
38
38
|
should_have_qu_session_in_new_thread = false
|
39
39
|
Thread.new do
|
40
40
|
should_have_qu_session_in_new_thread = (subject.connection == ::Mongoid::Sessions.with_name(:qu))
|
41
41
|
end.join
|
42
|
-
should_have_qu_session_in_new_thread.
|
42
|
+
expect(should_have_qu_session_in_new_thread).to be true
|
43
43
|
|
44
44
|
# Clean up
|
45
45
|
subject.connection=nil
|
46
46
|
::Mongoid.connect_to('qu')
|
47
47
|
end
|
48
48
|
|
49
|
-
it '
|
49
|
+
it 'uses MONGOHQ_URL from heroku' do
|
50
50
|
# Clean up from other tests
|
51
51
|
::Mongoid.sessions[:default] = nil
|
52
|
-
subject.connection=nil
|
52
|
+
subject.connection = nil
|
53
53
|
::Mongoid::Sessions.clear
|
54
54
|
|
55
55
|
ENV['MONGOHQ_URL'] = 'mongodb://127.0.0.1:27017/quspec'
|
56
|
-
subject.connection.options[:database].
|
57
|
-
|
58
|
-
|
56
|
+
expect(subject.connection.options[:database]).to eq('quspec')
|
57
|
+
|
58
|
+
node = subject.connection.cluster.nodes.first
|
59
|
+
resolved_address = if node.respond_to?(:resolved_address)
|
60
|
+
node.resolved_address
|
61
|
+
else
|
62
|
+
node.address.resolved
|
63
|
+
end
|
64
|
+
|
65
|
+
expect(resolved_address).to eq("127.0.0.1:27017")
|
66
|
+
|
67
|
+
expect(::Mongoid.sessions[:default][:hosts]).to include("127.0.0.1:27017")
|
59
68
|
|
60
69
|
# Clean up MONGOHQ stuff
|
61
70
|
ENV.delete('MONGOHQ_URL')
|
@@ -68,18 +77,18 @@ describe Qu::Backend::Mongoid do
|
|
68
77
|
let(:worker) { Qu::Worker.new }
|
69
78
|
|
70
79
|
describe "on mongo >=2" do
|
71
|
-
it '
|
80
|
+
it 'returns nil when no jobs exist' do
|
72
81
|
subject.clear
|
73
|
-
Moped::Session.
|
74
|
-
|
82
|
+
expect_any_instance_of(Moped::Session).to receive(:command).and_return(nil)
|
83
|
+
expect { expect(subject.reserve(worker, :block => false)).to be_nil }.not_to raise_error
|
75
84
|
end
|
76
85
|
end
|
77
86
|
|
78
87
|
describe 'on mongo <2' do
|
79
|
-
it '
|
88
|
+
it 'returns nil when no jobs exist' do
|
80
89
|
subject.clear
|
81
|
-
subject.connection.
|
82
|
-
|
90
|
+
expect(subject.connection).to receive(:command).and_raise(Moped::Errors::OperationFailure.new(nil, 'test'))
|
91
|
+
expect { expect(subject.reserve(worker, :block => false)).to be_nil }.not_to raise_error
|
83
92
|
end
|
84
93
|
end
|
85
94
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -5,7 +5,7 @@ require 'qu/backend/spec'
|
|
5
5
|
|
6
6
|
RSpec.configure do |config|
|
7
7
|
config.before do
|
8
|
-
Qu.backend =
|
8
|
+
Qu.backend = double('a backend', :reserve => nil, :failed => nil, :completed => nil,
|
9
9
|
:register_worker => nil, :unregister_worker => nil)
|
10
10
|
Qu.failure = nil
|
11
11
|
end
|
metadata
CHANGED
@@ -1,50 +1,71 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qu-mongoid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
version: 0.2.1
|
4
|
+
version: 0.2.2
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- David Butler
|
9
|
-
autorequire:
|
8
|
+
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-06-25 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: mongoid
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
16
22
|
version_requirements: !ruby/object:Gem::Requirement
|
17
23
|
requirements:
|
18
|
-
- -
|
24
|
+
- - ">="
|
19
25
|
- !ruby/object:Gem::Version
|
20
26
|
version: '3.0'
|
21
|
-
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: qu
|
22
29
|
requirement: !ruby/object:Gem::Requirement
|
23
30
|
requirements:
|
24
|
-
- -
|
31
|
+
- - ">="
|
25
32
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
27
|
-
none: false
|
28
|
-
prerelease: false
|
33
|
+
version: '0'
|
29
34
|
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
30
41
|
- !ruby/object:Gem::Dependency
|
31
|
-
name:
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '2.14'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
32
50
|
version_requirements: !ruby/object:Gem::Requirement
|
33
51
|
requirements:
|
34
|
-
- -
|
52
|
+
- - "~>"
|
35
53
|
- !ruby/object:Gem::Version
|
36
|
-
version:
|
37
|
-
|
38
|
-
|
54
|
+
version: '2.14'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
39
57
|
requirement: !ruby/object:Gem::Requirement
|
40
58
|
requirements:
|
41
|
-
- -
|
59
|
+
- - ">="
|
42
60
|
- !ruby/object:Gem::Version
|
43
|
-
version:
|
44
|
-
|
45
|
-
none: false
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
46
63
|
prerelease: false
|
47
|
-
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
48
69
|
description: Mongoid backend for the Ruby queuing library Qu
|
49
70
|
email:
|
50
71
|
- dwbutler@ucla.edu
|
@@ -52,8 +73,8 @@ executables: []
|
|
52
73
|
extensions: []
|
53
74
|
extra_rdoc_files: []
|
54
75
|
files:
|
55
|
-
- .gitignore
|
56
|
-
- .travis.yml
|
76
|
+
- ".gitignore"
|
77
|
+
- ".travis.yml"
|
57
78
|
- Gemfile
|
58
79
|
- LICENSE
|
59
80
|
- README.md
|
@@ -66,28 +87,25 @@ files:
|
|
66
87
|
- spec/spec_helper.rb
|
67
88
|
homepage: http://github.com/dwbutler/qu-mongoid
|
68
89
|
licenses: []
|
69
|
-
|
90
|
+
metadata: {}
|
91
|
+
post_install_message:
|
70
92
|
rdoc_options: []
|
71
93
|
require_paths:
|
72
94
|
- lib
|
73
95
|
required_ruby_version: !ruby/object:Gem::Requirement
|
74
96
|
requirements:
|
75
|
-
- -
|
97
|
+
- - ">="
|
76
98
|
- !ruby/object:Gem::Version
|
77
|
-
version:
|
78
|
-
MA==
|
79
|
-
none: false
|
99
|
+
version: '0'
|
80
100
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
81
101
|
requirements:
|
82
|
-
- -
|
102
|
+
- - ">="
|
83
103
|
- !ruby/object:Gem::Version
|
84
|
-
version:
|
85
|
-
MA==
|
86
|
-
none: false
|
104
|
+
version: '0'
|
87
105
|
requirements: []
|
88
|
-
rubyforge_project:
|
89
|
-
rubygems_version:
|
90
|
-
signing_key:
|
91
|
-
specification_version:
|
106
|
+
rubyforge_project:
|
107
|
+
rubygems_version: 2.2.2
|
108
|
+
signing_key:
|
109
|
+
specification_version: 4
|
92
110
|
summary: Mongoid backend for Qu
|
93
111
|
test_files: []
|