ncr-background_fu 1.0.8 → 1.0.9
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/History.txt +8 -0
- data/README.txt +3 -1
- data/background-fu.gemspec +3 -3
- data/generators/background/templates/background.rb +1 -1
- data/generators/background/templates/scaffold/_form.html.erb +10 -0
- data/generators/background/templates/scaffold/application_controller.rb +2 -0
- data/generators/background/templates/scaffold/new.html.erb +2 -0
- data/lib/background_fu.rb +1 -1
- data/lib/job/bonus_features.rb +7 -8
- data/lib/job.rb +2 -2
- metadata +5 -2
data/History.txt
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
=== 1.0.9 / 2008-10-22
|
2
|
+
|
3
|
+
* Merged a few important fixes from Keith Morrison. Bumped version, fixed gemspec (thanks 森山 誠二郎). Closes #4. [Keith Morrison, 森山 誠二郎, ncr]
|
4
|
+
|
5
|
+
=== Master / 2008-07-31
|
6
|
+
|
7
|
+
* Make it clear that generated views are meant to be used when bonus features are enabled. [Trevor Turk, ncr]
|
8
|
+
|
1
9
|
=== 1.0.8 / 2008-07-30
|
2
10
|
|
3
11
|
* Reverted back to "text" column for storing job results so it works on PostgreSQL. [Trevor Turk, ncr]
|
data/README.txt
CHANGED
@@ -17,7 +17,7 @@ Background tasks in Ruby On Rails made dead simple.
|
|
17
17
|
* Clean and straightforward approach (database-based priority queue).
|
18
18
|
* Uses database table (migration included) to store jobs reliably.
|
19
19
|
* Capistrano tasks included.
|
20
|
-
* Generators with migrations and example views included.
|
20
|
+
* Generators with migrations and example views included (to be used with concurrency enabled).
|
21
21
|
* Multiple worker daemons available.
|
22
22
|
* Easy to deploy in distributed environments.
|
23
23
|
* Enables prioritizing and simple scheduling.
|
@@ -131,6 +131,8 @@ in your environment.
|
|
131
131
|
These features are:
|
132
132
|
* monitoring progress (perfect for ajax progress bars)
|
133
133
|
* stopping a running worker in a merciful way.
|
134
|
+
|
135
|
+
Generated admin views are meant to be used only when bonus features (concurrency) are enabled.
|
134
136
|
|
135
137
|
Read the code (short and easy) to discover them.
|
136
138
|
|
data/background-fu.gemspec
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = %q{background_fu}
|
3
|
-
s.version = "1.0.
|
3
|
+
s.version = "1.0.9"
|
4
4
|
|
5
5
|
s.specification_version = 2 if s.respond_to? :specification_version=
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Jacek Becela"]
|
9
|
-
s.date = %q{2008-
|
9
|
+
s.date = %q{2008-10-22}
|
10
10
|
s.description = %q{Background tasks in Ruby On Rails made dead simple.}
|
11
11
|
s.email = ["jacek.becela@gmail.com"]
|
12
12
|
s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt"]
|
13
|
-
s.files = ["History.txt", "Manifest.txt", "README.txt", "Rakefile", "background-fu.gemspec", "generators/background/USAGE", "generators/background/background_generator.rb", "generators/background/templates/background.rb", "generators/background/templates/background_ctl", "generators/background/templates/daemons", "generators/background/templates/daemons.yml", "generators/background/templates/example_monitored_worker.rb", "generators/background/templates/example_worker.rb", "generators/background/templates/migration.rb", "generators/background/templates/scaffold/_job.html.erb", "generators/background/templates/scaffold/_job_deleted.html.erb", "generators/background/templates/scaffold/_progress_indicator.html.erb", "generators/background/templates/scaffold/background_fu.css", "generators/background/templates/scaffold/index.html.erb", "generators/background/templates/scaffold/jobs.html.erb", "generators/background/templates/scaffold/jobs_controller.rb", "generators/background/templates/scaffold/jobs_helper.rb", "lib/background_fu.rb", "lib/background_fu/worker_monitoring.rb", "lib/job.rb", "lib/job/bonus_features.rb", "rails/init.rb"]
|
13
|
+
s.files = ["History.txt", "Manifest.txt", "README.txt", "Rakefile", "background-fu.gemspec", "generators/background/USAGE", "generators/background/background_generator.rb", "generators/background/templates/background.rb", "generators/background/templates/background_ctl", "generators/background/templates/daemons", "generators/background/templates/daemons.yml", "generators/background/templates/example_monitored_worker.rb", "generators/background/templates/example_worker.rb", "generators/background/templates/migration.rb", "generators/background/templates/scaffold/_form.html.erb", "generators/background/templates/scaffold/_job.html.erb", "generators/background/templates/scaffold/_job_deleted.html.erb", "generators/background/templates/scaffold/_progress_indicator.html.erb", "generators/background/templates/scaffold/application_controller.rb", "generators/background/templates/scaffold/background_fu.css", "generators/background/templates/scaffold/index.html.erb", "generators/background/templates/scaffold/jobs.html.erb", "generators/background/templates/scaffold/jobs_controller.rb", "generators/background/templates/scaffold/jobs_helper.rb", "generators/background/templates/scaffold/new.html.erb", "lib/background_fu.rb", "lib/background_fu/worker_monitoring.rb", "lib/job.rb", "lib/job/bonus_features.rb", "rails/init.rb"]
|
14
14
|
s.has_rdoc = true
|
15
15
|
s.homepage = %q{http://github.com/ncr/background-fu}
|
16
16
|
s.rdoc_options = ["--main", "README.txt"]
|
@@ -11,7 +11,7 @@ else
|
|
11
11
|
end
|
12
12
|
|
13
13
|
loop do
|
14
|
-
if job = Job.find(:first, :conditions => ["state='pending' and start_at <= ?", Time.now
|
14
|
+
if job = Job.find(:first, :conditions => ["state='pending' and start_at <= ?", Time.now], :order => "priority desc, start_at asc")
|
15
15
|
job.get_done!
|
16
16
|
else
|
17
17
|
RAILS_DEFAULT_LOGGER.info("BackgroundFu: Waiting for jobs...")
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<%= error_messages_for :job %>
|
2
|
+
<% form_for(:job, :html => {:class => "job"}) do |f| %>
|
3
|
+
<%= f.label :worker_class %><br />
|
4
|
+
<%= f.text_field :worker_class, :class => "worker-class" %><br />
|
5
|
+
<%= f.label :worker_method %><br />
|
6
|
+
<%= f.text_field :worker_method, :class => "worker-method" %><br />
|
7
|
+
<%= f.label :args, "Args - each line (including empty) is interpreted as a string argument" %><br />
|
8
|
+
<%= f.text_area :args %><br />
|
9
|
+
<%= f.submit "Enqueue", :class => "button" %>
|
10
|
+
<% end %>
|
data/lib/background_fu.rb
CHANGED
data/lib/job/bonus_features.rb
CHANGED
@@ -16,6 +16,7 @@ module Job::BonusFeatures
|
|
16
16
|
invoke_worker_without_threads; nil
|
17
17
|
end
|
18
18
|
|
19
|
+
self.reload
|
19
20
|
self.state = res ? "stopped" : "finished"
|
20
21
|
end
|
21
22
|
|
@@ -44,7 +45,7 @@ module Job::BonusFeatures
|
|
44
45
|
end
|
45
46
|
end
|
46
47
|
|
47
|
-
#
|
48
|
+
# Overridden because of new "stopped" state.
|
48
49
|
def restart_with_threads!
|
49
50
|
if stopped? || failed?
|
50
51
|
update_attributes!(
|
@@ -57,13 +58,11 @@ module Job::BonusFeatures
|
|
57
58
|
end
|
58
59
|
end
|
59
60
|
|
60
|
-
#
|
61
|
-
# is
|
61
|
+
# Monitors the worker and updates the job progress. If the job's status
|
62
|
+
# is changed to 'stopping', the worker is requested to stop.
|
62
63
|
def monitor_worker
|
63
64
|
Thread.new do
|
64
|
-
|
65
|
-
# 2. !Job.find(id).stopping? - check if someone ordered stopping the job.
|
66
|
-
while(running? && !Job.find(id).stopping?)
|
65
|
+
while running? && !Job.find(id).stopping?
|
67
66
|
current_progress = @worker.instance_variable_get("@progress")
|
68
67
|
|
69
68
|
if current_progress == progress
|
@@ -74,11 +73,11 @@ module Job::BonusFeatures
|
|
74
73
|
end
|
75
74
|
end
|
76
75
|
|
77
|
-
|
78
|
-
if(Job.find(id).stopping?)
|
76
|
+
if Job.find(id).stopping?
|
79
77
|
@worker.instance_variable_set("@stopping", true)
|
80
78
|
end
|
81
79
|
end
|
80
|
+
|
82
81
|
logger.info("BackgroundFu: Job monitoring started. Job(id: #{id}).")
|
83
82
|
end
|
84
83
|
|
data/lib/job.rb
CHANGED
@@ -50,7 +50,7 @@ class Job < ActiveRecord::Base
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def initialize_worker
|
53
|
-
update_attributes!(:started_at => Time.now
|
53
|
+
update_attributes!(:started_at => Time.now, :state => "running")
|
54
54
|
@worker = worker_class.constantize.new
|
55
55
|
logger.info("BackgroundFu: Job initialized. Job(id: #{id}).")
|
56
56
|
end
|
@@ -107,7 +107,7 @@ class Job < ActiveRecord::Base
|
|
107
107
|
def setup_start_at
|
108
108
|
return unless start_at.blank?
|
109
109
|
|
110
|
-
self.start_at = Time.now
|
110
|
+
self.start_at = Time.now
|
111
111
|
end
|
112
112
|
|
113
113
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ncr-background_fu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jacek Becela
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-10-22 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -47,14 +47,17 @@ files:
|
|
47
47
|
- generators/background/templates/example_monitored_worker.rb
|
48
48
|
- generators/background/templates/example_worker.rb
|
49
49
|
- generators/background/templates/migration.rb
|
50
|
+
- generators/background/templates/scaffold/_form.html.erb
|
50
51
|
- generators/background/templates/scaffold/_job.html.erb
|
51
52
|
- generators/background/templates/scaffold/_job_deleted.html.erb
|
52
53
|
- generators/background/templates/scaffold/_progress_indicator.html.erb
|
54
|
+
- generators/background/templates/scaffold/application_controller.rb
|
53
55
|
- generators/background/templates/scaffold/background_fu.css
|
54
56
|
- generators/background/templates/scaffold/index.html.erb
|
55
57
|
- generators/background/templates/scaffold/jobs.html.erb
|
56
58
|
- generators/background/templates/scaffold/jobs_controller.rb
|
57
59
|
- generators/background/templates/scaffold/jobs_helper.rb
|
60
|
+
- generators/background/templates/scaffold/new.html.erb
|
58
61
|
- lib/background_fu.rb
|
59
62
|
- lib/background_fu/worker_monitoring.rb
|
60
63
|
- lib/job.rb
|