drbqs 0.0.19 → 0.1.0
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.
- checksums.yaml +7 -0
- data/docs/TestProfiler.md +30 -0
- data/drbqs.gemspec +2 -1
- data/{example → examples}/README.md +0 -0
- data/{example → examples}/command/server_def.rb +1 -1
- data/{example → examples}/error_server/error.rb +0 -0
- data/{example → examples}/error_server/server_def.rb +0 -0
- data/{example → examples}/error_task/error.rb +0 -0
- data/{example → examples}/error_task/server_def.rb +1 -1
- data/examples/execute/README.md +7 -0
- data/examples/execute/execute.rb +10 -0
- data/examples/execute/server.rb +27 -0
- data/{example/sum → examples/execute}/sum.rb +0 -0
- data/{example → examples}/group/execute.rb +5 -2
- data/{example → examples}/group/server.rb +0 -0
- data/{example → examples}/group/sum.rb +0 -0
- data/{example → examples}/mandelbrot/README.md +0 -0
- data/{example → examples}/mandelbrot/execute.rb +4 -1
- data/{example → examples}/mandelbrot/mandelbrot.rb +0 -0
- data/{example → examples}/mandelbrot/server.rb +0 -0
- data/examples/server/server.rb +20 -0
- data/{example → examples}/simple/README.md +0 -0
- data/{example → examples}/simple/execute.rb +0 -0
- data/{example → examples}/simple/server.rb +0 -0
- data/{example → examples}/simple/task.rb +0 -0
- data/{example → examples}/sum/server_def.rb +5 -1
- data/examples/sum/sum.rb +10 -0
- data/{example → examples}/sum2/execute_def.rb +0 -0
- data/{example → examples}/sum2/server_def.rb +3 -4
- data/{example → examples}/sum2/sum.rb +0 -0
- data/{example → examples}/transfer/file.rb +0 -0
- data/{example → examples}/transfer/server_def.rb +0 -0
- data/lib/drbqs.rb +5 -0
- data/lib/drbqs/command_line/command_execute.rb +1 -0
- data/lib/drbqs/command_line/command_server.rb +1 -1
- data/lib/drbqs/config/process_list.rb +9 -7
- data/lib/drbqs/execute/process_define.rb +109 -18
- data/lib/drbqs/execute/register.rb +41 -33
- data/lib/drbqs/ext/task/command_task.rb +20 -17
- data/lib/drbqs/node/connection.rb +1 -2
- data/lib/drbqs/node/node.rb +3 -4
- data/lib/drbqs/server/server.rb +9 -3
- data/lib/drbqs/setting/base.rb +1 -0
- data/lib/drbqs/setting/data_container.rb +2 -2
- data/lib/drbqs/setting/execute.rb +9 -2
- data/lib/drbqs/setting/node.rb +7 -1
- data/lib/drbqs/setting/server.rb +4 -1
- data/lib/drbqs/task/registrar.rb +1 -2
- data/lib/drbqs/utility/misc.rb +6 -1
- data/lib/drbqs/utility/temporary.rb +27 -34
- data/lib/drbqs/version.rb +1 -1
- data/lib/drbqs/worker/worker_process_set.rb +3 -1
- data/spec/command_line/command_base_spec.rb +2 -2
- data/spec/config/config_spec.rb +5 -4
- data/spec/config/ssh_host_spec.rb +1 -1
- data/spec/execute/process_define_spec.rb +65 -18
- data/spec/execute/register_spec.rb +31 -9
- data/spec/ext/task/command_task_spec.rb +3 -5
- data/spec/integration_test/09_server_process_data_spec.rb +1 -1
- data/spec/node/node_spec.rb +3 -3
- data/spec/node/task_client_spec.rb +10 -10
- data/spec/server/history_spec.rb +22 -10
- data/spec/server/queue_spec.rb +11 -11
- data/spec/server/server_spec.rb +2 -2
- data/spec/server/transfer_setting_spec.rb +1 -1
- data/spec/setting/source_spec.rb +11 -10
- data/spec/task/task_spec.rb +5 -5
- data/spec/utility/misc_spec.rb +1 -1
- data/spec/utility/temporary_spec.rb +1 -7
- data/spec/utility/transfer/transfer_client_connect_spec.rb +4 -4
- data/spec/utility/transfer/transfer_file_list_spec.rb +2 -2
- data/spec/utility/transfer/transfer_spec.rb +23 -8
- metadata +108 -70
- data/example/execute/execute.rb +0 -41
- data/example/execute/server.rb +0 -14
- data/example/execute/task.rb +0 -0
- data/example/server/server.rb +0 -11
@@ -18,6 +18,7 @@ module DRbQS
|
|
18
18
|
def __register__(type, setting, name, template, args, &block)
|
19
19
|
ary = [name.intern, { :type => type.intern, :template => template, :args => args }]
|
20
20
|
type = type.to_s
|
21
|
+
# Note that if type is :server, then args[0] is hostname
|
21
22
|
case block.arity
|
22
23
|
when 2
|
23
24
|
if DRbQS::Setting::SSH === setting
|
@@ -33,6 +34,10 @@ module DRbQS
|
|
33
34
|
end
|
34
35
|
ary[1][:ssh] = true
|
35
36
|
ary[1][:setting] = ssh_setting
|
37
|
+
|
38
|
+
if type == "server" && !template && !args[0]
|
39
|
+
raise ArgumentError, "No hostname of SSH server"
|
40
|
+
end
|
36
41
|
when 1
|
37
42
|
if DRbQS::Setting::SSH === setting
|
38
43
|
raise ArgumentError, "Inherited definition is over ssh."
|
@@ -40,6 +45,7 @@ module DRbQS
|
|
40
45
|
yield(setting.value)
|
41
46
|
ary[1][:ssh] = false
|
42
47
|
ary[1][:setting] = setting
|
48
|
+
ary[1][:unix_domain_socket] = (!template && !args[0])
|
43
49
|
else
|
44
50
|
raise ArgumentError, "Block must take one or two arguments."
|
45
51
|
end
|
@@ -89,12 +95,21 @@ module DRbQS
|
|
89
95
|
# If we omit the 'connect' method then the program tries to connect
|
90
96
|
# the name specified as first argument.
|
91
97
|
#
|
92
|
-
# @
|
93
|
-
#
|
94
|
-
#
|
95
|
-
#
|
98
|
+
# @overload server(name, hostname, opts = {})
|
99
|
+
# @param [Symbol,String] name Server name
|
100
|
+
# @param [Symbol,String] hostname Hostname of server to access over SSH
|
101
|
+
# @param [Hash] opts The options of server
|
102
|
+
# @option opts [Boolean] :template Template for other servers to load, not actual server
|
103
|
+
# @option opts [Symbol] :load Inherit definition of other server
|
104
|
+
#
|
105
|
+
# @overload server(name, opts = {})
|
106
|
+
# If hostname is omitted, the server uses UNIX domain socket and executes some nodes together.
|
107
|
+
# @param [Symbol,String] name Server name
|
108
|
+
# @param [Hash] opts The options of server
|
109
|
+
# @option opts [Boolean] :template Template for other servers to load, not actual server
|
110
|
+
# @option opts [Symbol] :load Inherit definition of other server
|
96
111
|
#
|
97
|
-
# @example A server on localhost
|
112
|
+
# @example A server on localhost (Connections from nodes is over SSH)
|
98
113
|
# server :server_local, "example.com" do |srv|
|
99
114
|
# srv.load "server_definition.rb"
|
100
115
|
# srv.acl "/path/to/acl"
|
@@ -104,7 +119,7 @@ module DRbQS
|
|
104
119
|
# srv.sftp_host "example.com"
|
105
120
|
# end
|
106
121
|
#
|
107
|
-
# @example A server over
|
122
|
+
# @example A server executed over SSH
|
108
123
|
# server :server_ssh, "example.co.jp" do |srv, ssh|
|
109
124
|
# srv.load "server_definition.rb"
|
110
125
|
# srv.acl "/path/to/acl"
|
@@ -120,36 +135,28 @@ module DRbQS
|
|
120
135
|
# ssh.output "/path/to/output"
|
121
136
|
# ssh.nice 10
|
122
137
|
# end
|
138
|
+
#
|
139
|
+
# @example A server on localhost that uses UNIX domain socket (No node on other computer)
|
140
|
+
# server :server_unix_domain_socket do |srv|
|
141
|
+
# srv.load "server_definition.rb"
|
142
|
+
# srv.execute_node 4
|
143
|
+
# end
|
123
144
|
def server(name, *args, &block)
|
145
|
+
unless block_given?
|
146
|
+
raise ArgumentError, "Block to define settings is not given."
|
147
|
+
end
|
124
148
|
name = name.intern
|
125
149
|
if ind = @__server__.index { |n, data| name == n }
|
126
150
|
old_data = @__server__.delete_at(ind)
|
127
151
|
else
|
128
152
|
old_data = nil
|
129
153
|
end
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
when 2
|
135
|
-
hostname = args[0]
|
136
|
-
opts = args[1]
|
137
|
-
unless Hash === opts
|
138
|
-
raise ArgumentError, "Options must be hash."
|
139
|
-
end
|
140
|
-
when 1
|
141
|
-
if Hash === args[0]
|
142
|
-
hostname = nil
|
143
|
-
opts = args[0]
|
144
|
-
else
|
145
|
-
hostname = args[0]
|
146
|
-
opts = {}
|
147
|
-
end
|
148
|
-
else
|
149
|
-
unless old_data
|
150
|
-
raise ArgumentError, "Invalid argument size."
|
151
|
-
end
|
154
|
+
opts = args.extract_options!
|
155
|
+
opts.assert_valid_keys(:template, :load)
|
156
|
+
if args.size > 1
|
157
|
+
raise ArgumentError, "Invalid number of arguments."
|
152
158
|
end
|
159
|
+
hostname = args[0]
|
153
160
|
if old_data
|
154
161
|
if opts[:load]
|
155
162
|
raise ArgumentError, "Can not set both reconfiguring and loading."
|
@@ -159,9 +166,6 @@ module DRbQS
|
|
159
166
|
else
|
160
167
|
load_def = opts[:load]
|
161
168
|
end
|
162
|
-
if !opts[:template] && !hostname
|
163
|
-
raise ArgumentError, "Definition of server '#{name}' needs hostname."
|
164
|
-
end
|
165
169
|
__register_server__(opts[:template], name, load_def, hostname, &block)
|
166
170
|
end
|
167
171
|
|
@@ -203,6 +207,7 @@ module DRbQS
|
|
203
207
|
# @example Node group
|
204
208
|
# node :node_group, :group => [:node_local, :node_ssh]
|
205
209
|
def node(name, opts = {}, &block)
|
210
|
+
opts.assert_valid_keys(:template, :load, :group)
|
206
211
|
name = name.intern
|
207
212
|
load_def = opts[:load]
|
208
213
|
if ind = @__node__.index { |n, data| name == n }
|
@@ -233,7 +238,7 @@ module DRbQS
|
|
233
238
|
end
|
234
239
|
end
|
235
240
|
|
236
|
-
# @param [Array]
|
241
|
+
# @param [Array] args Symbols of servers
|
237
242
|
# @example Clear server definitions
|
238
243
|
# clear_server :server1, :server2
|
239
244
|
def clear_server(*args)
|
@@ -244,7 +249,7 @@ module DRbQS
|
|
244
249
|
end
|
245
250
|
end
|
246
251
|
|
247
|
-
# @param [Array]
|
252
|
+
# @param [Array] args Symbols of nodes
|
248
253
|
# @example Clear node definitions
|
249
254
|
# clear_node :node1, :node2
|
250
255
|
def clear_node(*args)
|
@@ -259,10 +264,12 @@ module DRbQS
|
|
259
264
|
# @param [Hash] val the pair of key and value
|
260
265
|
# @option val [Fixnum] :port Port number of a server
|
261
266
|
# @option val [Symbol] :server Server executed by default
|
267
|
+
# @option val [Array] :node Nodes executed by default if server has no node
|
262
268
|
# @option val [String] :log Path of log of a server and nods on localhost
|
263
269
|
# @example Set default value
|
264
270
|
# default :port => 13456, :server => :server_local, :log => "/tmp/drbqs_execute_log"
|
265
271
|
def default(val = {})
|
272
|
+
val.assert_valid_keys(:port, :server, :node, :log)
|
266
273
|
val.delete_if { |key, v| !v }
|
267
274
|
if val[:server]
|
268
275
|
val[:server] = val[:server].intern
|
@@ -290,6 +297,7 @@ module DRbQS
|
|
290
297
|
# @example Set usage
|
291
298
|
# usage :message => 'Calculate some value', :server => 'server.rb'
|
292
299
|
def usage(opts = {})
|
300
|
+
opts.assert_valid_keys(:message, :server)
|
293
301
|
@__usage__.merge!(opts)
|
294
302
|
end
|
295
303
|
|
@@ -4,26 +4,23 @@ module DRbQS
|
|
4
4
|
|
5
5
|
# Execute a command and transfer files if needed.
|
6
6
|
class CommandExecute
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
raise ArgumentError, "Invalid command: #{@
|
7
|
+
def initialize(cmds, opts = {})
|
8
|
+
opts.assert_valid_keys(:transfer, :compress)
|
9
|
+
@cmds = cmds
|
10
|
+
if String === @cmds
|
11
|
+
@cmds = [@cmds]
|
12
|
+
elsif !(Array === @cmds)
|
13
|
+
raise ArgumentError, "Invalid command: #{@cmds.inspect}"
|
14
14
|
end
|
15
15
|
@transfer = opts[:transfer]
|
16
16
|
@compress = opts[:compress]
|
17
17
|
end
|
18
18
|
|
19
19
|
def exec
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
when String
|
24
|
-
system(@cmd)
|
20
|
+
exit_status_ary = @cmds.map do |cmd|
|
21
|
+
system(cmd)
|
22
|
+
$?.exitstatus
|
25
23
|
end
|
26
|
-
exit_status = $?.exitstatus
|
27
24
|
if @transfer
|
28
25
|
if @transfer.respond_to?(:each)
|
29
26
|
@transfer.each { |path| DRbQS::Transfer.enqueue(path, :compress => @compress) }
|
@@ -31,13 +28,19 @@ module DRbQS
|
|
31
28
|
DRbQS::Transfer.enqueue(@transfer, :compress => @compress)
|
32
29
|
end
|
33
30
|
end
|
34
|
-
|
31
|
+
exit_status_ary
|
35
32
|
end
|
36
33
|
end
|
37
34
|
|
38
|
-
#
|
39
|
-
|
40
|
-
|
35
|
+
# @override initialize(*cmds, opts = {}, &hook)
|
36
|
+
# @param [Array] cmds An array of commands which are string or array, that is, arguments of the method 'system'.
|
37
|
+
# @param [Hash] opts Hash of options
|
38
|
+
# @param [Proc] hook Block same as that of DRbQS::Task object, which takes a server instance and an array of exit statuses.
|
39
|
+
# @option opts [String,Array] :transfer Paths to be transfered after finish of commands
|
40
|
+
# @option opts [boolean] :compress Compress files before transfering or not
|
41
|
+
def initialize(*args, &hook)
|
42
|
+
opts = args.extract_options!
|
43
|
+
super(DRbQS::CommandTask::CommandExecute.new(args, opts), :exec, &hook)
|
41
44
|
end
|
42
45
|
end
|
43
46
|
end
|
data/lib/drbqs/node/node.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'drbqs/task/task'
|
2
|
-
require 'drbqs/utility/temporary'
|
3
2
|
require 'drbqs/utility/transfer/transfer_client'
|
4
3
|
require 'drbqs/node/connection'
|
5
4
|
require 'drbqs/node/task_client'
|
@@ -18,7 +17,7 @@ module DRbQS
|
|
18
17
|
WAIT_NEW_TASK_TIME = 1
|
19
18
|
SAME_HOST_GROUP = :local
|
20
19
|
|
21
|
-
# @param [String]
|
20
|
+
# @param [String] access_uri Set the uri of server
|
22
21
|
# @param [Hash] opts Options of a node
|
23
22
|
# @option opts [Fixnum] :process Number of worker processes
|
24
23
|
# @option opts [Array] :group An array of group symbols
|
@@ -62,7 +61,7 @@ module DRbQS
|
|
62
61
|
transfer_file(files)
|
63
62
|
end
|
64
63
|
if subdir = result_hash[:tmp]
|
65
|
-
FileUtils.rm_r(
|
64
|
+
FileUtils.rm_r(subdir)
|
66
65
|
end
|
67
66
|
@task_client.queue_result(task_id, result_hash[:result])
|
68
67
|
end
|
@@ -223,7 +222,7 @@ module DRbQS
|
|
223
222
|
private :send_task_to_worker
|
224
223
|
|
225
224
|
def clear_node_files
|
226
|
-
DRbQS::Temporary.
|
225
|
+
DRbQS::Temporary.delete
|
227
226
|
@config.list.node.delete(Process.pid)
|
228
227
|
end
|
229
228
|
private :clear_node_files
|
data/lib/drbqs/server/server.rb
CHANGED
@@ -161,12 +161,12 @@ module DRbQS
|
|
161
161
|
end
|
162
162
|
private :all_tasks_assigned?
|
163
163
|
|
164
|
-
# @param [DRbQS::task
|
164
|
+
# @param [Array] tasks An array of DRbQS::task objects, which are executed at initialization
|
165
165
|
def set_initialization_task(*tasks)
|
166
166
|
@message.set_initialization_tasks(tasks)
|
167
167
|
end
|
168
168
|
|
169
|
-
# @param [DRbQS::task
|
169
|
+
# @param [Array] tasks An array of DRbQS::task objects, which are executed at initialization
|
170
170
|
def set_finalization_task(*tasks)
|
171
171
|
@finalization_task.concat(tasks)
|
172
172
|
end
|
@@ -175,10 +175,10 @@ module DRbQS
|
|
175
175
|
# @note When we set both :empty_queue and task generators,
|
176
176
|
# hook of :empty_queue is prior to task generators.
|
177
177
|
# @param [:empty_queue,:process_data,:finish] key Set the type of hook.
|
178
|
+
# @param [Proc] block The block is obligatory and takes server itself as an argument.
|
178
179
|
# @option opts [Fixnum] :repeat If we execute the hook specified times then the hook is deleted.
|
179
180
|
# If the value is nil, the hook is repeated without limit.
|
180
181
|
# @option opts [String] :name Name of the hook. If the value is nil then the name is automatically created.
|
181
|
-
# @param [Proc] &block block is obligatory and takes server itself as an argument.
|
182
182
|
def add_hook(key, opts = {}, &block)
|
183
183
|
if key == :process_data
|
184
184
|
if @hook.number_of_hook(:process_data) != 0
|
@@ -395,6 +395,11 @@ module DRbQS
|
|
395
395
|
end
|
396
396
|
private :first_task_generator_init
|
397
397
|
|
398
|
+
def clear_server_files
|
399
|
+
DRbQS::Temporary.delete
|
400
|
+
end
|
401
|
+
private :clear_server_files
|
402
|
+
|
398
403
|
def wait
|
399
404
|
first_task_generator_init
|
400
405
|
loop do
|
@@ -407,6 +412,7 @@ module DRbQS
|
|
407
412
|
sleep(WAIT_TIME_NEW_RESULT)
|
408
413
|
end
|
409
414
|
end
|
415
|
+
clear_server_files
|
410
416
|
end
|
411
417
|
end
|
412
418
|
end
|
data/lib/drbqs/setting/base.rb
CHANGED
@@ -3,7 +3,7 @@ module DRbQS
|
|
3
3
|
class Source
|
4
4
|
class DataContainer < BasicObject
|
5
5
|
attr_accessor :argument
|
6
|
-
attr_reader :__data__
|
6
|
+
attr_reader :__data__, :__array__
|
7
7
|
|
8
8
|
def initialize(array_class)
|
9
9
|
@argument = []
|
@@ -27,7 +27,7 @@ module DRbQS
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def self.clone_container(obj)
|
30
|
-
cl = DRbQS::Setting::Source::DataContainer.new(
|
30
|
+
cl = DRbQS::Setting::Source::DataContainer.new(obj.__array__)
|
31
31
|
cl.argument = obj.argument.clone
|
32
32
|
obj.__data__.each do |key, val|
|
33
33
|
cl.__data__[key] = val.clone
|
@@ -10,7 +10,7 @@ module DRbQS
|
|
10
10
|
[:port, :server, :node].each do |key|
|
11
11
|
register_key(key, :check => 1)
|
12
12
|
end
|
13
|
-
[:no_server, :no_node, :information, :help].each do |key|
|
13
|
+
[:no_server, :no_node, :wait_server_finish, :information, :help].each do |key|
|
14
14
|
register_key(key, :bool => true)
|
15
15
|
end
|
16
16
|
set_argument_condition(:<=, 1)
|
@@ -43,6 +43,7 @@ module DRbQS
|
|
43
43
|
else
|
44
44
|
@mode = nil
|
45
45
|
end
|
46
|
+
@wait_server_finish = set?(:wait_server_finish)
|
46
47
|
if @mode != :help && !@definition
|
47
48
|
raise DRbQS::Setting::InvalidArgument, "Definition file must be specified."
|
48
49
|
end
|
@@ -50,7 +51,10 @@ module DRbQS
|
|
50
51
|
|
51
52
|
def exec(io = nil)
|
52
53
|
process_def = DRbQS::ProcessDefinition.new(@server, @node, @port, io)
|
53
|
-
|
54
|
+
if @definition
|
55
|
+
process_def.load(@definition)
|
56
|
+
process_def.test_consistency
|
57
|
+
end
|
54
58
|
case @mode
|
55
59
|
when :help
|
56
60
|
io.puts process_def.usage if io
|
@@ -63,6 +67,9 @@ module DRbQS
|
|
63
67
|
unless @no_node
|
64
68
|
process_def.execute_node
|
65
69
|
end
|
70
|
+
if !@no_server && @wait_server_finish
|
71
|
+
process_def.wait_server_finish
|
72
|
+
end
|
66
73
|
end
|
67
74
|
true
|
68
75
|
end
|
data/lib/drbqs/setting/node.rb
CHANGED
@@ -69,7 +69,12 @@ module DRbQS
|
|
69
69
|
private :parse_group
|
70
70
|
|
71
71
|
def exec(io = nil)
|
72
|
-
|
72
|
+
if @__daemon__
|
73
|
+
fork do
|
74
|
+
exec_as_daemon
|
75
|
+
end
|
76
|
+
return true
|
77
|
+
end
|
73
78
|
|
74
79
|
@options[:load].each do |path|
|
75
80
|
io.puts "load #{path}" if io
|
@@ -80,6 +85,7 @@ module DRbQS
|
|
80
85
|
end
|
81
86
|
|
82
87
|
if io
|
88
|
+
io.puts "PID: #{Process.pid}"
|
83
89
|
io.puts "Connect to #{@uri}"
|
84
90
|
io.puts "Execute #{@process_num} processes"
|
85
91
|
end
|
data/lib/drbqs/setting/server.rb
CHANGED
@@ -25,9 +25,12 @@ module DRbQS
|
|
25
25
|
|
26
26
|
def parse_test
|
27
27
|
@test_opts[:profile] = get(:profile)
|
28
|
-
@test_opts[:printer] = get_first(:
|
28
|
+
@test_opts[:printer] = get_first(:profile_printer) do |val|
|
29
29
|
val.intern
|
30
30
|
end
|
31
|
+
if @test_opts[:printer] && !@test_opts[:profile]
|
32
|
+
@test_opts[:profile] = true
|
33
|
+
end
|
31
34
|
if test = get_first(:test)
|
32
35
|
@command_type = "test_#{test.to_s}"
|
33
36
|
end
|
data/lib/drbqs/task/registrar.rb
CHANGED
@@ -11,8 +11,7 @@ module DRbQS
|
|
11
11
|
end
|
12
12
|
|
13
13
|
# Add tasks to server.
|
14
|
-
# @param [DRbQS::Task] arg
|
15
|
-
# @param [Array] arg Add all elements of an array of objects of DRbQS::Task.
|
14
|
+
# @param [DRbQS::Task,Array] arg DRbQS::Task object or array of DRbQS::Task objects, which is added to pool of tasks
|
16
15
|
def add(arg)
|
17
16
|
case arg
|
18
17
|
when DRbQS::Task
|
data/lib/drbqs/utility/misc.rb
CHANGED
@@ -16,6 +16,11 @@ module DRbQS
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
+
def uri_drbunix(path)
|
20
|
+
"drbunix:#{path}"
|
21
|
+
end
|
22
|
+
module_function :uri_drbunix
|
23
|
+
|
19
24
|
# @param [Hash] opts The arguments of URI of server
|
20
25
|
# @option opts [Fixnum] :port Port number of a server
|
21
26
|
# @option opts [String] :host Hostname of a server
|
@@ -33,7 +38,7 @@ module DRbQS
|
|
33
38
|
elsif File.exist?(path)
|
34
39
|
raise ArgumentError, "File #{path} already exists."
|
35
40
|
end
|
36
|
-
|
41
|
+
uri_drbunix(path)
|
37
42
|
end
|
38
43
|
end
|
39
44
|
module_function :create_uri
|