jobby 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/jobby +7 -3
- data/lib/runner.rb +1 -1
- data/lib/server.rb +5 -1
- data/spec/file_for_prerunning.rb +2 -0
- data/spec/server_spec.rb +17 -2
- metadata +3 -2
data/bin/jobby
CHANGED
@@ -38,7 +38,7 @@ OptionParser.new do |opts|
|
|
38
38
|
end
|
39
39
|
|
40
40
|
opts.on("--version", "Show version") do
|
41
|
-
puts "0.1.
|
41
|
+
puts "0.1.3"
|
42
42
|
exit
|
43
43
|
end
|
44
44
|
|
@@ -69,11 +69,11 @@ OptionParser.new do |opts|
|
|
69
69
|
options[:max_child_processes] = forked_children.to_i
|
70
70
|
end
|
71
71
|
|
72
|
-
opts.on("-u", "--user [USER]", "Run the processes as this user (probably requires superuser
|
72
|
+
opts.on("-u", "--user [USER]", "Run the processes as this user (probably requires superuser privileges)") do |user|
|
73
73
|
options[:user] = user
|
74
74
|
end
|
75
75
|
|
76
|
-
opts.on("-g", "--group [GROUP]", "Run the processes as this group (probably requires superuser
|
76
|
+
opts.on("-g", "--group [GROUP]", "Run the processes as this group (probably requires superuser privileges)") do |group|
|
77
77
|
options[:group] = group
|
78
78
|
end
|
79
79
|
|
@@ -84,6 +84,10 @@ OptionParser.new do |opts|
|
|
84
84
|
opts.on("-c", "--command [COMMAND]", "Run this shell code in the forked children") do |command|
|
85
85
|
options[:command] = command
|
86
86
|
end
|
87
|
+
|
88
|
+
opts.on("-p", "--prerun [FILEPATH]", "Run this Ruby code before forking any children") do |filepath|
|
89
|
+
options[:prerun] = filepath
|
90
|
+
end
|
87
91
|
end.parse!
|
88
92
|
|
89
93
|
Jobby::Runner.new(options).run
|
data/lib/runner.rb
CHANGED
@@ -66,7 +66,7 @@ module Jobby
|
|
66
66
|
exit if @options[:flush] or @options[:wipe]
|
67
67
|
fork do
|
68
68
|
begin
|
69
|
-
Jobby::Server.new(@options[:socket], @options[:max_child_processes], @options[:log]).run(&get_proc_from_options)
|
69
|
+
Jobby::Server.new(@options[:socket], @options[:max_child_processes], @options[:log], @options[:prerun]).run(&get_proc_from_options)
|
70
70
|
rescue Exception => exception
|
71
71
|
return error(exception.message)
|
72
72
|
end
|
data/lib/server.rb
CHANGED
@@ -53,11 +53,12 @@ module Jobby
|
|
53
53
|
# % pkill -USR1 -f jobby
|
54
54
|
#
|
55
55
|
class Server
|
56
|
-
def initialize(socket_path, max_forked_processes, log)
|
56
|
+
def initialize(socket_path, max_forked_processes, log, prerun = nil)
|
57
57
|
@socket_path = socket_path
|
58
58
|
@max_forked_processes = max_forked_processes.to_i
|
59
59
|
@log = log
|
60
60
|
@queue = Queue.new
|
61
|
+
@prerun = prerun
|
61
62
|
end
|
62
63
|
|
63
64
|
# Starts the server and listens for connections. The specified block is run in
|
@@ -69,6 +70,9 @@ module Jobby
|
|
69
70
|
@logger.error "No block given, exiting"
|
70
71
|
terminate
|
71
72
|
end
|
73
|
+
if @prerun
|
74
|
+
load File.expand_path(@prerun)
|
75
|
+
end
|
72
76
|
start_forking_thread(block)
|
73
77
|
loop do
|
74
78
|
client = @socket.accept
|
data/spec/server_spec.rb
CHANGED
@@ -11,9 +11,9 @@ $0 = "jobby spec"
|
|
11
11
|
|
12
12
|
describe Jobby::Server do
|
13
13
|
|
14
|
-
def run_server(socket, max_child_processes, log_filepath, &block)
|
14
|
+
def run_server(socket, max_child_processes, log_filepath, prerun = nil, &block)
|
15
15
|
@server_pid = fork do
|
16
|
-
Jobby::Server.new(socket, max_child_processes, log_filepath).run(&block)
|
16
|
+
Jobby::Server.new(socket, max_child_processes, log_filepath, prerun).run(&block)
|
17
17
|
end
|
18
18
|
sleep 0.2
|
19
19
|
end
|
@@ -176,4 +176,19 @@ describe Jobby::Server do
|
|
176
176
|
lambda { Jobby::Client.new(@socket) { |c| c.send("hello?") } }.should raise_error(Errno::ENOENT)
|
177
177
|
`pgrep -f 'jobby spec'`.strip.should eql("#{Process.pid}")
|
178
178
|
end
|
179
|
+
|
180
|
+
it "should be able to run a Ruby file before any forking" do
|
181
|
+
terminate_server
|
182
|
+
run_server(@socket, 1, @log_filepath, "spec/file_for_prerunning.rb") do
|
183
|
+
sleep 2
|
184
|
+
if defined?(Preran)
|
185
|
+
File.open(@child_filepath, "a+") do |file|
|
186
|
+
file << "preran OK"
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end
|
190
|
+
Jobby::Client.new(@socket) { |c| c.send("hiya") }
|
191
|
+
sleep 3
|
192
|
+
File.read(@child_filepath).should eql("preran OK")
|
193
|
+
end
|
179
194
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jobby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mark Somerville
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-07-
|
12
|
+
date: 2008-07-08 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -28,6 +28,7 @@ files:
|
|
28
28
|
- lib/client.rb
|
29
29
|
- spec/server_spec.rb
|
30
30
|
- spec/run_all.rb
|
31
|
+
- spec/file_for_prerunning.rb
|
31
32
|
- README
|
32
33
|
has_rdoc: true
|
33
34
|
homepage: http://mark.scottishclimbs.com/
|