jobbr 1.1.0 → 1.1.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.lock +1 -1
- data/README.rdoc +4 -0
- data/app/models/jobbr/standalone_tasks.rb +5 -3
- data/lib/jobbr/version.rb +1 -1
- data/lib/tasks/jobbr_heroku_tasks.rake +29 -0
- data/lib/tasks/jobbr_tasks.rake +15 -31
- metadata +5 -4
data/Gemfile.lock
CHANGED
data/README.rdoc
CHANGED
@@ -62,6 +62,10 @@ Then you will need to manually add jobs to the Heroku scheduler console
|
|
62
62
|
|
63
63
|
{<img src="http://cl.ly/image/2N1T1l1w2c28/Capture%20d%E2%80%99%C3%A9cran%202013-07-09%20%C3%A0%2022.18.40.png" width='400'>}[http://cl.ly/image/2N1T1l1w2c28]
|
64
64
|
|
65
|
+
You also need to add an environment variable to let Jobbr know it's running on Heroku
|
66
|
+
|
67
|
+
heroku config:add HEROKU=true
|
68
|
+
|
65
69
|
=== Delayed Jobs
|
66
70
|
|
67
71
|
Use generators to get a new job model:
|
@@ -19,9 +19,11 @@ module Jobbr
|
|
19
19
|
klass = "#{name.to_s.pluralize.camelize}::#{File.basename(file, '.rb').camelize}".constantize
|
20
20
|
dependencies << klass.name
|
21
21
|
{
|
22
|
-
name:
|
23
|
-
desc:
|
24
|
-
klass_name:
|
22
|
+
name: klass.task_name.to_sym,
|
23
|
+
desc: klass.description,
|
24
|
+
klass_name: klass.name,
|
25
|
+
heroku_frequency: klass.heroku_frequency,
|
26
|
+
heroku_priority: klass.heroku_priority,
|
25
27
|
dependencies: (dependencies[0..1] + [klass.name]).map { |n| "#{n.underscore}.rb" }
|
26
28
|
}
|
27
29
|
end
|
data/lib/jobbr/version.rb
CHANGED
@@ -0,0 +1,29 @@
|
|
1
|
+
require "jobbr/mongoid.rb"
|
2
|
+
|
3
|
+
namespace :jobbr do
|
4
|
+
|
5
|
+
namespace :heroku do
|
6
|
+
|
7
|
+
desc 'Run all minutely Heroku jobs'
|
8
|
+
task :minutely => :environment do
|
9
|
+
run_heroku_scheduled_classes(:minutely)
|
10
|
+
end
|
11
|
+
|
12
|
+
desc 'Run all hourly Heroku jobs'
|
13
|
+
task :hourly => :environment do
|
14
|
+
run_heroku_scheduled_classes(:hourly)
|
15
|
+
end
|
16
|
+
|
17
|
+
desc 'Run all daily Heroku jobs'
|
18
|
+
task :daily => :environment do
|
19
|
+
run_heroku_scheduled_classes(:daily)
|
20
|
+
end
|
21
|
+
|
22
|
+
def run_heroku_scheduled_classes(frequency)
|
23
|
+
load "jobbr/scheduled_job"
|
24
|
+
Jobbr::Mongoid.models(Jobbr::ScheduledJob).select{|c| c.heroku_frequency == frequency }.sort{|a,b| b.heroku_priority <=> a.heroku_priority}.each(&:run)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
data/lib/tasks/jobbr_tasks.rake
CHANGED
@@ -1,41 +1,25 @@
|
|
1
|
-
|
2
|
-
require File.join(models_root, 'jobbr', 'standalone_tasks')
|
3
|
-
require "jobbr/mongoid.rb"
|
1
|
+
unless ENV['HEROKU']
|
4
2
|
|
5
|
-
|
3
|
+
models_root = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'app', 'models'))
|
4
|
+
require File.join(models_root, 'jobbr', 'standalone_tasks')
|
6
5
|
|
7
|
-
|
8
|
-
# dynamically create a rake task for each individual Jobbr::ScheduledJob
|
9
|
-
desc info[:desc]
|
10
|
-
task info[:name] => :environment do
|
11
|
-
info[:dependencies].each { |lib| load lib }
|
12
|
-
info[:klass_name].constantize.run
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
desc 'Mark all running job as failed.'
|
17
|
-
task :sweep_running_jobs => :environment do
|
18
|
-
Jobbr::Run.where(status: :running).update_all(status: :failure)
|
19
|
-
end
|
20
|
-
|
21
|
-
namespace :heroku do
|
6
|
+
namespace :jobbr do
|
22
7
|
|
23
|
-
|
24
|
-
|
8
|
+
Jobbr::StandaloneTasks.all(:scheduled_job).each do |info|
|
9
|
+
# dynamically create a rake task for each individual Jobbr::ScheduledJob
|
10
|
+
desc info[:desc]
|
11
|
+
task info[:name] => :environment do
|
12
|
+
info[:dependencies].each { |lib| load lib }
|
13
|
+
info[:klass_name].constantize.run
|
14
|
+
end
|
25
15
|
end
|
26
16
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
task :daily => :environment do
|
32
|
-
heroku_scheduled_classes(:daily).each(&:run)
|
33
|
-
end
|
34
|
-
|
35
|
-
def heroku_scheduled_classes(frequency)
|
36
|
-
Jobbr::Mongoid.models(Jobbr::ScheduledJob).select{|c| c.heroku_frequency == frequency }.sort{|a,b| b.heroku_priority <=> a.heroku_priority}
|
17
|
+
desc 'Mark all running job as failed.'
|
18
|
+
task :sweep_running_jobs => :environment do
|
19
|
+
Jobbr::Run.where(status: :running).update_all(status: :failure)
|
37
20
|
end
|
38
21
|
|
39
22
|
end
|
40
23
|
|
41
24
|
end
|
25
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jobbr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-07-
|
12
|
+
date: 2013-07-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -180,6 +180,7 @@ files:
|
|
180
180
|
- lib/jobbr/mongoid.rb
|
181
181
|
- lib/jobbr/version.rb
|
182
182
|
- lib/jobbr/whenever.rb
|
183
|
+
- lib/tasks/jobbr_heroku_tasks.rake
|
183
184
|
- lib/tasks/jobbr_tasks.rake
|
184
185
|
- script/rails
|
185
186
|
- spec/dummy/README.rdoc
|
@@ -250,7 +251,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
250
251
|
version: '0'
|
251
252
|
segments:
|
252
253
|
- 0
|
253
|
-
hash:
|
254
|
+
hash: 3800200861971861567
|
254
255
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
255
256
|
none: false
|
256
257
|
requirements:
|
@@ -259,7 +260,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
259
260
|
version: '0'
|
260
261
|
segments:
|
261
262
|
- 0
|
262
|
-
hash:
|
263
|
+
hash: 3800200861971861567
|
263
264
|
requirements: []
|
264
265
|
rubyforge_project:
|
265
266
|
rubygems_version: 1.8.23
|