delayed_job_groups_mongoid 0.2.4 → 0.3.1
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/Gemfile +9 -5
- data/Gemfile.lock +131 -0
- data/Rakefile.rb +26 -0
- data/VERSION +1 -0
- data/config.ru +0 -0
- data/delayed_job_groups_mongoid.gemspec +38 -9
- data/lib/delayed_job_groups/mongoid_groups.rb +21 -24
- data/spec/database.yml +3 -0
- data/spec/delayed_job_groups_spec.rb +47 -21
- data/spec/spec_helper.rb +12 -6
- metadata +97 -15
data/Gemfile
CHANGED
@@ -2,7 +2,7 @@ source :rubygems
|
|
2
2
|
|
3
3
|
gem 'rails'
|
4
4
|
gem 'delayed_job', '2.1.1'
|
5
|
-
gem 'delayed_job_mongoid', '1.0.
|
5
|
+
gem 'delayed_job_mongoid', '1.0.1'
|
6
6
|
gem 'mongoid', '2.0.0.beta.20'
|
7
7
|
gem 'bson_ext'
|
8
8
|
|
@@ -10,10 +10,14 @@ gem 'bson_ext'
|
|
10
10
|
group :test do
|
11
11
|
gem 'rspec-rails'
|
12
12
|
gem 'sqlite3-ruby'
|
13
|
-
gem 'autotest'
|
14
|
-
gem 'autotest-fsevent'
|
15
|
-
gem 'autotest-growl'
|
16
13
|
gem 'database_cleaner'
|
17
14
|
gem 'ruby-debug'
|
18
15
|
gem 'awesome_print'
|
19
|
-
|
16
|
+
gem 'timecop'
|
17
|
+
end
|
18
|
+
|
19
|
+
group :local do
|
20
|
+
gem 'autotest'
|
21
|
+
gem 'autotest-fsevent'
|
22
|
+
gem 'autotest-growl'
|
23
|
+
end
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,131 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
abstract (1.0.0)
|
5
|
+
actionmailer (3.0.1)
|
6
|
+
actionpack (= 3.0.1)
|
7
|
+
mail (~> 2.2.5)
|
8
|
+
actionpack (3.0.1)
|
9
|
+
activemodel (= 3.0.1)
|
10
|
+
activesupport (= 3.0.1)
|
11
|
+
builder (~> 2.1.2)
|
12
|
+
erubis (~> 2.6.6)
|
13
|
+
i18n (~> 0.4.1)
|
14
|
+
rack (~> 1.2.1)
|
15
|
+
rack-mount (~> 0.6.12)
|
16
|
+
rack-test (~> 0.5.4)
|
17
|
+
tzinfo (~> 0.3.23)
|
18
|
+
activemodel (3.0.1)
|
19
|
+
activesupport (= 3.0.1)
|
20
|
+
builder (~> 2.1.2)
|
21
|
+
i18n (~> 0.4.1)
|
22
|
+
activerecord (3.0.1)
|
23
|
+
activemodel (= 3.0.1)
|
24
|
+
activesupport (= 3.0.1)
|
25
|
+
arel (~> 1.0.0)
|
26
|
+
tzinfo (~> 0.3.23)
|
27
|
+
activeresource (3.0.1)
|
28
|
+
activemodel (= 3.0.1)
|
29
|
+
activesupport (= 3.0.1)
|
30
|
+
activesupport (3.0.1)
|
31
|
+
arel (1.0.1)
|
32
|
+
activesupport (~> 3.0.0)
|
33
|
+
autotest (4.4.1)
|
34
|
+
autotest-fsevent (0.2.3)
|
35
|
+
sys-uname
|
36
|
+
autotest-growl (0.2.6)
|
37
|
+
awesome_print (0.3.1)
|
38
|
+
bson (1.1.2)
|
39
|
+
bson_ext (1.1.2)
|
40
|
+
builder (2.1.2)
|
41
|
+
columnize (0.3.2)
|
42
|
+
daemons (1.1.0)
|
43
|
+
database_cleaner (0.6.0)
|
44
|
+
delayed_job (2.1.1)
|
45
|
+
activesupport (~> 3.0)
|
46
|
+
daemons
|
47
|
+
delayed_job_mongoid (1.0.1)
|
48
|
+
delayed_job (~> 2.1.1)
|
49
|
+
mongoid (~> 2.0)
|
50
|
+
diff-lcs (1.1.2)
|
51
|
+
erubis (2.6.6)
|
52
|
+
abstract (>= 1.0.0)
|
53
|
+
i18n (0.4.2)
|
54
|
+
linecache (0.43)
|
55
|
+
mail (2.2.9)
|
56
|
+
activesupport (>= 2.3.6)
|
57
|
+
i18n (~> 0.4.1)
|
58
|
+
mime-types (~> 1.16)
|
59
|
+
treetop (~> 1.4.8)
|
60
|
+
mime-types (1.16)
|
61
|
+
mongo (1.1.2)
|
62
|
+
bson (>= 1.1.1)
|
63
|
+
mongoid (2.0.0.beta.20)
|
64
|
+
activemodel (~> 3.0)
|
65
|
+
mongo (~> 1.1)
|
66
|
+
tzinfo (~> 0.3.22)
|
67
|
+
will_paginate (~> 3.0.pre)
|
68
|
+
polyglot (0.3.1)
|
69
|
+
rack (1.2.1)
|
70
|
+
rack-mount (0.6.13)
|
71
|
+
rack (>= 1.0.0)
|
72
|
+
rack-test (0.5.6)
|
73
|
+
rack (>= 1.0)
|
74
|
+
rails (3.0.1)
|
75
|
+
actionmailer (= 3.0.1)
|
76
|
+
actionpack (= 3.0.1)
|
77
|
+
activerecord (= 3.0.1)
|
78
|
+
activeresource (= 3.0.1)
|
79
|
+
activesupport (= 3.0.1)
|
80
|
+
bundler (~> 1.0.0)
|
81
|
+
railties (= 3.0.1)
|
82
|
+
railties (3.0.1)
|
83
|
+
actionpack (= 3.0.1)
|
84
|
+
activesupport (= 3.0.1)
|
85
|
+
rake (>= 0.8.4)
|
86
|
+
thor (~> 0.14.0)
|
87
|
+
rake (0.8.7)
|
88
|
+
rspec (2.0.1)
|
89
|
+
rspec-core (~> 2.0.1)
|
90
|
+
rspec-expectations (~> 2.0.1)
|
91
|
+
rspec-mocks (~> 2.0.1)
|
92
|
+
rspec-core (2.0.1)
|
93
|
+
rspec-expectations (2.0.1)
|
94
|
+
diff-lcs (>= 1.1.2)
|
95
|
+
rspec-mocks (2.0.1)
|
96
|
+
rspec-core (~> 2.0.1)
|
97
|
+
rspec-expectations (~> 2.0.1)
|
98
|
+
rspec-rails (2.0.1)
|
99
|
+
rspec (~> 2.0.0)
|
100
|
+
ruby-debug (0.10.4)
|
101
|
+
columnize (>= 0.1)
|
102
|
+
ruby-debug-base (~> 0.10.4.0)
|
103
|
+
ruby-debug-base (0.10.4)
|
104
|
+
linecache (>= 0.3)
|
105
|
+
sqlite3-ruby (1.3.1)
|
106
|
+
sys-uname (0.8.4)
|
107
|
+
thor (0.14.3)
|
108
|
+
timecop (0.3.5)
|
109
|
+
treetop (1.4.8)
|
110
|
+
polyglot (>= 0.3.1)
|
111
|
+
tzinfo (0.3.23)
|
112
|
+
will_paginate (3.0.pre2)
|
113
|
+
|
114
|
+
PLATFORMS
|
115
|
+
ruby
|
116
|
+
|
117
|
+
DEPENDENCIES
|
118
|
+
autotest
|
119
|
+
autotest-fsevent
|
120
|
+
autotest-growl
|
121
|
+
awesome_print
|
122
|
+
bson_ext
|
123
|
+
database_cleaner
|
124
|
+
delayed_job (= 2.1.1)
|
125
|
+
delayed_job_mongoid (= 1.0.1)
|
126
|
+
mongoid (= 2.0.0.beta.20)
|
127
|
+
rails
|
128
|
+
rspec-rails
|
129
|
+
ruby-debug
|
130
|
+
sqlite3-ruby
|
131
|
+
timecop
|
data/Rakefile.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
require 'rspec/core'
|
4
|
+
require 'rspec/core/rake_task'
|
5
|
+
|
6
|
+
begin
|
7
|
+
require 'jeweler'
|
8
|
+
Jeweler::Tasks.new do |gem|
|
9
|
+
gem.name = "delayed_job_groups_mongoid"
|
10
|
+
gem.summary = %Q{Adds job groups to delayed_job_mongoid}
|
11
|
+
gem.description = %Q{Adds job groups to delayed_job_mongoid}
|
12
|
+
gem.email = "oliver@opsb.co.uk"
|
13
|
+
gem.homepage = "http://github.com/opsb/delayed_job_groups_mongoid"
|
14
|
+
gem.authors = ["opsb"]
|
15
|
+
end
|
16
|
+
Jeweler::GemcutterTasks.new
|
17
|
+
rescue LoadError
|
18
|
+
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
19
|
+
end
|
20
|
+
|
21
|
+
desc "run rspec scenarios"
|
22
|
+
task :spec do
|
23
|
+
RSpec::Core::RakeTask.new do |t|
|
24
|
+
t.pattern = "./spec/**/*_spec.rb"
|
25
|
+
end
|
26
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.3.1
|
data/config.ru
ADDED
File without changes
|
@@ -1,29 +1,43 @@
|
|
1
1
|
# Generated by jeweler
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile.rb, and run
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile.rb, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{delayed_job_groups_mongoid}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.3.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["opsb"]
|
12
|
-
s.date = %q{2010-
|
13
|
-
s.description = %q{Adds job groups to
|
12
|
+
s.date = %q{2010-12-07}
|
13
|
+
s.description = %q{Adds job groups to delayed_job_mongoid}
|
14
14
|
s.email = %q{oliver@opsb.co.uk}
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"README.markdown"
|
17
17
|
]
|
18
|
-
s.files =
|
19
|
-
|
20
|
-
|
18
|
+
s.files = [
|
19
|
+
"Gemfile",
|
20
|
+
"Gemfile.lock",
|
21
|
+
"README.markdown",
|
22
|
+
"Rakefile.rb",
|
23
|
+
"VERSION",
|
24
|
+
"config.ru",
|
25
|
+
"delayed_job_groups_mongoid.gemspec",
|
26
|
+
"lib/delayed_job_groups/init.rb",
|
27
|
+
"lib/delayed_job_groups/job_groups.rb",
|
28
|
+
"lib/delayed_job_groups/mongoid_groups.rb",
|
29
|
+
"lib/delayed_job_groups_mongoid.rb",
|
30
|
+
"spec/database.yml",
|
31
|
+
"spec/delayed_job_groups_spec.rb",
|
32
|
+
"spec/spec_helper.rb"
|
33
|
+
]
|
34
|
+
s.homepage = %q{http://github.com/opsb/delayed_job_groups_mongoid}
|
21
35
|
s.require_paths = ["lib"]
|
22
36
|
s.rubygems_version = %q{1.3.7}
|
23
|
-
s.summary = %q{Adds job groups to
|
37
|
+
s.summary = %q{Adds job groups to delayed_job_mongoid}
|
24
38
|
s.test_files = [
|
25
39
|
"spec/delayed_job_groups_spec.rb",
|
26
|
-
|
40
|
+
"spec/spec_helper.rb"
|
27
41
|
]
|
28
42
|
|
29
43
|
if s.respond_to? :specification_version then
|
@@ -31,9 +45,24 @@ Gem::Specification.new do |s|
|
|
31
45
|
s.specification_version = 3
|
32
46
|
|
33
47
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
48
|
+
s.add_runtime_dependency(%q<rails>, [">= 0"])
|
49
|
+
s.add_runtime_dependency(%q<delayed_job>, ["= 2.1.1"])
|
50
|
+
s.add_runtime_dependency(%q<delayed_job_mongoid>, ["= 1.0.1"])
|
51
|
+
s.add_runtime_dependency(%q<mongoid>, ["= 2.0.0.beta.20"])
|
52
|
+
s.add_runtime_dependency(%q<bson_ext>, [">= 0"])
|
34
53
|
else
|
54
|
+
s.add_dependency(%q<rails>, [">= 0"])
|
55
|
+
s.add_dependency(%q<delayed_job>, ["= 2.1.1"])
|
56
|
+
s.add_dependency(%q<delayed_job_mongoid>, ["= 1.0.1"])
|
57
|
+
s.add_dependency(%q<mongoid>, ["= 2.0.0.beta.20"])
|
58
|
+
s.add_dependency(%q<bson_ext>, [">= 0"])
|
35
59
|
end
|
36
60
|
else
|
61
|
+
s.add_dependency(%q<rails>, [">= 0"])
|
62
|
+
s.add_dependency(%q<delayed_job>, ["= 2.1.1"])
|
63
|
+
s.add_dependency(%q<delayed_job_mongoid>, ["= 1.0.1"])
|
64
|
+
s.add_dependency(%q<mongoid>, ["= 2.0.0.beta.20"])
|
65
|
+
s.add_dependency(%q<bson_ext>, [">= 0"])
|
37
66
|
end
|
38
67
|
end
|
39
68
|
|
@@ -5,37 +5,34 @@ module Delayed
|
|
5
5
|
class Backend::Mongoid::Job
|
6
6
|
field :lock_group
|
7
7
|
scope :in_unlocked_group, lambda{ where(:lock_group.nin => self.locked_groups) }
|
8
|
+
scope :locked_jobs, lambda{ where(:locked_at.gt => time_out_threshold ) }
|
8
9
|
|
10
|
+
def self.time_out_threshold
|
11
|
+
db_time_now - Delayed::Worker.max_run_time
|
12
|
+
end
|
13
|
+
|
9
14
|
def self.locked_groups
|
10
|
-
Delayed::Job.only(:lock_group).
|
15
|
+
Delayed::Job.locked_jobs.only(:lock_group).group.map{ |grouping| grouping["lock_group"] }
|
11
16
|
end
|
12
17
|
|
13
|
-
def self.
|
18
|
+
def self.reserve(worker, max_run_time = Worker.max_run_time)
|
14
19
|
right_now = db_time_now
|
15
20
|
|
16
|
-
conditions = {:run_at => {"$lte" => right_now}, :failed_at => nil}
|
21
|
+
conditions = {:run_at => {"$lte" => right_now}, :failed_at => nil, :lock_group => { "$nin" => self.locked_groups } }
|
17
22
|
(conditions[:priority] ||= {})['$gte'] = Worker.min_priority.to_i if Worker.min_priority
|
18
23
|
(conditions[:priority] ||= {})['$lte'] = Worker.max_priority.to_i if Worker.max_priority
|
19
24
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
25
|
+
where = "this.locked_by == '#{worker.name}' || this.locked_at == null || this.locked_at < #{make_date(right_now - max_run_time)}"
|
26
|
+
conditions.merge!('$where' => where)
|
27
|
+
|
28
|
+
begin
|
29
|
+
result = self.db.collection(self.collection.name).find_and_modify(:query => conditions, :sort => [['locked_by', -1], ['priority', 1], ['run_at', 1]], :update => {"$set" => {:locked_at => right_now, :locked_by => worker.name}})
|
30
|
+
# Return result as a Mongoid document.
|
31
|
+
# When Mongoid starts supporting findAndModify, this extra step should no longer be necessary.
|
32
|
+
self.find(:first, :conditions => {:_id => result["_id"]})
|
33
|
+
rescue Mongo::OperationFailure
|
34
|
+
nil # no jobs available
|
35
|
+
end
|
36
|
+
end
|
27
37
|
end
|
28
|
-
end
|
29
|
-
|
30
|
-
__END__
|
31
|
-
|
32
|
-
scope :in_unlocked_group, lambda{
|
33
|
-
delayed_jobs = self.table_name
|
34
|
-
unlocked_groups_select = "select distinct #{delayed_jobs}.lock_group from #{delayed_jobs} where #{delayed_jobs}.locked_by is not null"
|
35
|
-
where("#{delayed_jobs}.lock_group not in (#{unlocked_groups_select}) or #{delayed_jobs}.lock_group is null")
|
36
|
-
}
|
37
|
-
scope :orig_ready_to_run, scopes[:ready_to_run]
|
38
|
-
scope :ready_to_run, lambda{ |*args|
|
39
|
-
orig_ready_to_run(*args).
|
40
|
-
in_unlocked_group
|
41
|
-
}
|
38
|
+
end
|
data/spec/database.yml
ADDED
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'spec/spec_helper'
|
2
2
|
|
3
|
-
|
4
3
|
class GroupedJob
|
5
4
|
include Mongoid::Document
|
6
5
|
include JobGroups
|
@@ -36,9 +35,19 @@ class User
|
|
36
35
|
end
|
37
36
|
end
|
38
37
|
|
38
|
+
module Delayed
|
39
|
+
class Backend::Mongoid::Job
|
40
|
+
def lock!(worker, time = Time.now.utc)
|
41
|
+
self.locked_by = worker.name
|
42
|
+
self.locked_at = time
|
43
|
+
save!
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
39
48
|
describe Delayed::Job do
|
40
|
-
|
41
|
-
WORKER =
|
49
|
+
Delayed::Worker.max_run_time = MAX_RUN_TIME = 5.hours
|
50
|
+
WORKER = OpenStruct.new.tap{|worker| worker.name = "name_of_worker"}
|
42
51
|
|
43
52
|
context "a job" do
|
44
53
|
before do
|
@@ -52,22 +61,23 @@ describe Delayed::Job do
|
|
52
61
|
|
53
62
|
context "with 2 jobs in the same group, one locked, one unlocked and 1 job in a different group" do
|
54
63
|
before do
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
2.times do
|
59
|
-
GroupedJob.new(:repository => 'repo1')
|
64
|
+
2.times do |n|
|
65
|
+
Delayed::Job.enqueue GroupedJob.new(:repository => 'repo1', :priority => n)
|
60
66
|
end
|
61
|
-
1.times{ GroupedJob.new(:repository => 'repo2') }
|
62
|
-
Delayed::Job.where(:lock_group => "repo1").first.
|
67
|
+
1.times{ Delayed::Job.enqueue GroupedJob.new(:repository => 'repo2', :priority => 3) }
|
68
|
+
Delayed::Job.where(:lock_group => "repo1").first.lock!(WORKER)
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should have one locked job" do
|
72
|
+
Delayed::Job.locked_jobs.count.should == 1
|
63
73
|
end
|
64
74
|
|
65
75
|
it "should have one locked group" do
|
66
76
|
Delayed::Job.locked_groups.should == ['repo1']
|
67
77
|
end
|
68
78
|
|
69
|
-
it "should
|
70
|
-
Delayed::Job.
|
79
|
+
it "should not reserve job from same group" do
|
80
|
+
Delayed::Job.reserve(WORKER).lock_group.should_not == "repo1"
|
71
81
|
end
|
72
82
|
end
|
73
83
|
|
@@ -76,7 +86,7 @@ describe Delayed::Job do
|
|
76
86
|
Delayed::Job.enqueue SimpleJob.new
|
77
87
|
end
|
78
88
|
it "should still be queuable" do
|
79
|
-
Delayed::Job.
|
89
|
+
Delayed::Job.reserve(WORKER).should_not be_nil
|
80
90
|
end
|
81
91
|
end
|
82
92
|
|
@@ -85,13 +95,12 @@ describe Delayed::Job do
|
|
85
95
|
2.times do
|
86
96
|
User.create(:role => "admin").send_welcome_email
|
87
97
|
end
|
88
|
-
1.times{ User.create(:role => "PA").send_welcome_email }
|
89
|
-
Delayed::Job.where(:lock_group => "admin").first.
|
98
|
+
1.times{ User.create(:role => "PA").send_welcome_email }
|
99
|
+
Delayed::Job.where(:lock_group => "admin").first.lock!(WORKER)
|
90
100
|
end
|
91
101
|
|
92
102
|
it "should only find the job in the different group" do
|
93
|
-
Delayed::Job.
|
94
|
-
Delayed::Job.find_available(WORKER, MAX_RUN_TIME).first.lock_group.should == "PA"
|
103
|
+
Delayed::Job.reserve(WORKER).lock_group.should == "PA"
|
95
104
|
end
|
96
105
|
end
|
97
106
|
|
@@ -100,13 +109,30 @@ describe Delayed::Job do
|
|
100
109
|
2.times do
|
101
110
|
User.create(:role => "admin").delay.expensive_operation
|
102
111
|
end
|
103
|
-
1.times{ Delayed::Job.enqueue GroupedJob.new(:repository => "repo2") }
|
104
|
-
Delayed::Job.where(:lock_group => "admin").
|
112
|
+
1.times{ Delayed::Job.enqueue GroupedJob.new(:repository => "repo2") }
|
113
|
+
Delayed::Job.where(:lock_group => "admin").each{ |job| job.update :priority => 1}
|
114
|
+
Delayed::Job.where(:lock_group => "repo2").each{ |job| job.update :priority => 2}
|
115
|
+
Delayed::Job.where(:lock_group => "admin").first.lock!(WORKER)
|
105
116
|
end
|
106
117
|
|
107
118
|
it "should find only the job in the different group" do
|
108
|
-
Delayed::Job.
|
109
|
-
Delayed::Job.find_available(WORKER, MAX_RUN_TIME).first.lock_group.should == "repo2"
|
119
|
+
Delayed::Job.reserve(WORKER).lock_group.should == "repo2"
|
110
120
|
end
|
111
121
|
end
|
122
|
+
|
123
|
+
context "with 2 jobs in the same group, one timed out" do
|
124
|
+
before do
|
125
|
+
@timed_out, @other = (1..2).map{ Delayed::Job.enqueue GroupedJob.new(:repository => "repo1") }
|
126
|
+
@timed_out.lock!(WORKER)
|
127
|
+
Timecop.freeze(Time.now.utc + MAX_RUN_TIME + 1.minute)
|
128
|
+
end
|
129
|
+
|
130
|
+
after do
|
131
|
+
Timecop.return
|
132
|
+
end
|
133
|
+
|
134
|
+
it "should find no locked jobs" do
|
135
|
+
Delayed::Job.locked_jobs(MAX_RUN_TIME).count.should == 0
|
136
|
+
end
|
137
|
+
end
|
112
138
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -5,6 +5,7 @@ require 'bundler/setup'
|
|
5
5
|
require 'logger'
|
6
6
|
require 'mongoid'
|
7
7
|
require 'ap'
|
8
|
+
require 'timecop'
|
8
9
|
|
9
10
|
|
10
11
|
|
@@ -14,10 +15,15 @@ require 'rails'
|
|
14
15
|
Mongoid.configure do |config|
|
15
16
|
name = "delayed_job_groups_mongoid"
|
16
17
|
host = "localhost"
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
|
19
|
+
if ENV['ZENSLAP_ID']
|
20
|
+
config.from_hash("uri" => ENV['MONGOHQ_URL'])
|
21
|
+
else
|
22
|
+
config.master = Mongo::Connection.new.db(name)
|
23
|
+
config.slaves = [
|
24
|
+
Mongo::Connection.new(host, 27017, :slave_ok => true).db(name)
|
25
|
+
]
|
26
|
+
end
|
21
27
|
config.persist_in_safe_mode = false
|
22
28
|
end
|
23
29
|
|
@@ -29,13 +35,13 @@ Delayed::Worker.logger = Logger.new('/tmp/dj.log')
|
|
29
35
|
|
30
36
|
Delayed::Worker.backend = :mongoid
|
31
37
|
|
32
|
-
|
33
38
|
require 'delayed_job_groups/init.rb'
|
34
39
|
RSpec.configure do |config|
|
35
40
|
require 'database_cleaner'
|
36
41
|
DatabaseCleaner.strategy = :truncation
|
37
42
|
config.after(:each) do
|
38
|
-
|
43
|
+
::Mongoid.database.collections.select{ |c| c.name !~ /^system/ }.each{ |condemned| condemned.remove }
|
44
|
+
# DatabaseCleaner.clean
|
39
45
|
end
|
40
46
|
config.filter_run :focus => true
|
41
47
|
config.run_all_when_everything_filtered = true
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: delayed_job_groups_mongoid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 17
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 3
|
9
|
+
- 1
|
10
|
+
version: 0.3.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- opsb
|
@@ -15,11 +15,88 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-12-07 00:00:00 +00:00
|
19
19
|
default_executable:
|
20
|
-
dependencies:
|
21
|
-
|
22
|
-
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
name: rails
|
25
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ">="
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
hash: 3
|
31
|
+
segments:
|
32
|
+
- 0
|
33
|
+
version: "0"
|
34
|
+
requirement: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
type: :runtime
|
37
|
+
prerelease: false
|
38
|
+
name: delayed_job
|
39
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - "="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
hash: 9
|
45
|
+
segments:
|
46
|
+
- 2
|
47
|
+
- 1
|
48
|
+
- 1
|
49
|
+
version: 2.1.1
|
50
|
+
requirement: *id002
|
51
|
+
- !ruby/object:Gem::Dependency
|
52
|
+
type: :runtime
|
53
|
+
prerelease: false
|
54
|
+
name: delayed_job_mongoid
|
55
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
56
|
+
none: false
|
57
|
+
requirements:
|
58
|
+
- - "="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
hash: 21
|
61
|
+
segments:
|
62
|
+
- 1
|
63
|
+
- 0
|
64
|
+
- 1
|
65
|
+
version: 1.0.1
|
66
|
+
requirement: *id003
|
67
|
+
- !ruby/object:Gem::Dependency
|
68
|
+
type: :runtime
|
69
|
+
prerelease: false
|
70
|
+
name: mongoid
|
71
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - "="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
hash: 62196427
|
77
|
+
segments:
|
78
|
+
- 2
|
79
|
+
- 0
|
80
|
+
- 0
|
81
|
+
- beta
|
82
|
+
- 20
|
83
|
+
version: 2.0.0.beta.20
|
84
|
+
requirement: *id004
|
85
|
+
- !ruby/object:Gem::Dependency
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
name: bson_ext
|
89
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
hash: 3
|
95
|
+
segments:
|
96
|
+
- 0
|
97
|
+
version: "0"
|
98
|
+
requirement: *id005
|
99
|
+
description: Adds job groups to delayed_job_mongoid
|
23
100
|
email: oliver@opsb.co.uk
|
24
101
|
executables: []
|
25
102
|
|
@@ -28,22 +105,27 @@ extensions: []
|
|
28
105
|
extra_rdoc_files:
|
29
106
|
- README.markdown
|
30
107
|
files:
|
108
|
+
- Gemfile
|
109
|
+
- Gemfile.lock
|
110
|
+
- README.markdown
|
111
|
+
- Rakefile.rb
|
112
|
+
- VERSION
|
113
|
+
- config.ru
|
114
|
+
- delayed_job_groups_mongoid.gemspec
|
31
115
|
- lib/delayed_job_groups/init.rb
|
32
116
|
- lib/delayed_job_groups/job_groups.rb
|
33
117
|
- lib/delayed_job_groups/mongoid_groups.rb
|
34
118
|
- lib/delayed_job_groups_mongoid.rb
|
35
|
-
-
|
36
|
-
- delayed_job_groups_mongoid.gemspec
|
37
|
-
- README.markdown
|
119
|
+
- spec/database.yml
|
38
120
|
- spec/delayed_job_groups_spec.rb
|
39
121
|
- spec/spec_helper.rb
|
40
122
|
has_rdoc: true
|
41
|
-
homepage: http://github.com/opsb/
|
123
|
+
homepage: http://github.com/opsb/delayed_job_groups_mongoid
|
42
124
|
licenses: []
|
43
125
|
|
44
126
|
post_install_message:
|
45
|
-
rdoc_options:
|
46
|
-
|
127
|
+
rdoc_options: []
|
128
|
+
|
47
129
|
require_paths:
|
48
130
|
- lib
|
49
131
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -70,7 +152,7 @@ rubyforge_project:
|
|
70
152
|
rubygems_version: 1.3.7
|
71
153
|
signing_key:
|
72
154
|
specification_version: 3
|
73
|
-
summary: Adds job groups to
|
155
|
+
summary: Adds job groups to delayed_job_mongoid
|
74
156
|
test_files:
|
75
157
|
- spec/delayed_job_groups_spec.rb
|
76
158
|
- spec/spec_helper.rb
|