jobbr 1.1.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|