easy-serve 0.10 → 0.11

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d74d8eda371150176555b9637f8e20b237edf068
4
- data.tar.gz: ae3c58392fe3da0cb5e316f814a2a3b60e171087
3
+ metadata.gz: 1ef2c07a293530b91eacbd1630d63507acddedab
4
+ data.tar.gz: 004b52c5e9f3399f60a882f6302b648e900c8afe
5
5
  SHA512:
6
- metadata.gz: 299b6abc59f540f9dd71f53d933ff5638cba9757a07fc9290c3bae5599868a3a9414e59c988d126582bd2f87a414fcff3dfcd7bfa3497f209bac8a894ae24919
7
- data.tar.gz: fa63d61b24de5644289ac3711d15a25f1b869c547b46bbc733c5da17ca4849a2d280d7d44625f10648aadac6befda81fa35519c1d4a0bd5af6fd9489ce3c5a4d
6
+ metadata.gz: 6ab412543120bca229865bff3b1f4a66bca28ec4bef4336feacd5c0c392a04a7a9672a6452c93539d49f6344ae8e642c3ed46b92c9773b81a2f0f1dbfa423f88
7
+ data.tar.gz: ec3d64c1e104eae2f79ed87fb918e992d3bf25ead58374a55cf38da332421b7e8c84c16e2007ca7e8913bd0ad50c5887ad5b47cabc6347bc967c617f72ce60fe
data/COPYING CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2013, Joel VanderWerf, vjoel@users.sourceforge.net
1
+ Copyright (c) 2013-2014, Joel VanderWerf, vjoel@users.sourceforge.net
2
2
  All rights reserved.
3
3
 
4
4
  Redistribution and use in source and binary forms, with or without
@@ -6,7 +6,7 @@ require 'fileutils'
6
6
  require 'easy-serve/service'
7
7
 
8
8
  class EasyServe
9
- VERSION = "0.10"
9
+ VERSION = "0.11"
10
10
 
11
11
  class EasyFormatter < Logger::Formatter
12
12
  Format = "%s: %s: %s\n"
@@ -162,12 +162,26 @@ class EasyServe
162
162
 
163
163
  def start_services
164
164
  if @owner
165
+ if services_file
166
+ begin
167
+ FileUtils.ln_s services_file, ".lock.#{services_file}"
168
+ # Successful creation of the lock file gives this process the
169
+ # right to create the services_file itself.
170
+ rescue Errno::EEXIST
171
+ raise Errno::EEXIST, "Services at #{services_file} already exist."
172
+ end
173
+ end
174
+
165
175
  log.debug {"starting services"}
166
176
  yield
167
177
 
168
178
  if services_file
169
- File.open(services_file, "w") do |f|
170
- YAML.dump(services, f)
179
+ begin
180
+ File.open(services_file, "w") do |f|
181
+ YAML.dump(services, f)
182
+ end
183
+ ensure
184
+ FileUtils.rm_f ".lock.#{services_file}"
171
185
  end
172
186
  end
173
187
  end
@@ -188,7 +202,7 @@ class EasyServe
188
202
  if base
189
203
  "#{base}-#{name}"
190
204
  else
191
- File.join(tmpdir, "sock-#{name}")
205
+ File.join(tmpdir, "sock-#{name}") ## permissions?
192
206
  end
193
207
  end
194
208
 
@@ -222,6 +236,36 @@ class EasyServe
222
236
 
223
237
  MAX_TRIES = 10
224
238
 
239
+ # Start a service named +name+. The name is referenced in #child, #local,
240
+ # and #remote to connect a new process to this service.
241
+ #
242
+ # The +proto+ can be either :unix (the default) or :tcp; the value can also
243
+ # be specifed with the proto: key-value argument.
244
+ #
245
+ # Other key-value arguments are:
246
+ #
247
+ # :path :: for unix sockets, path to the socket file to be created
248
+ #
249
+ # :base :: for unix sockets, a base string for constructing the
250
+ # socket filename, if :path option is not provided;
251
+ # if neither :path nor :base specified, socket is in a tmp dir
252
+ # with filename based on +name+.
253
+ #
254
+ # :bind_host :: interface this service listens on, such as:
255
+ #
256
+ # "0.0.0.0", "<any>" (same)
257
+ #
258
+ # "localhost", "127.0.0.1" (same)
259
+ #
260
+ # or a specific hostname.
261
+ #
262
+ # :connect_host :: host specifier used by remote clients to connect.
263
+ # By default, this is constructed from the bind_host.
264
+ # For example, with bind_host: "<any>", the default
265
+ # connect_host is the current hostname (see #host_name).
266
+ #
267
+ # :port :: port this service listens on; defaults to 0 to choose a free port
268
+ #
225
269
  def service name, proto = nil, **opts
226
270
  proto ||= opts.delete(:proto) || :unix
227
271
  case proto
@@ -232,7 +276,7 @@ class EasyServe
232
276
  opts[:connect_host] ||=
233
277
  case opts[:bind_host]
234
278
  when nil, "0.0.0.0", /\A<any>\z/i
235
- host_name ## maybe local connectors should use "localhost" ?
279
+ host_name
236
280
  when "localhost", "127.0.0.1"
237
281
  "localhost"
238
282
  end
@@ -270,11 +314,6 @@ class EasyServe
270
314
  c
271
315
  end
272
316
 
273
- def client *args, &block
274
- warn "EasyServe#client is deprecated; use #child"
275
- child *args, &block
276
- end
277
-
278
317
  def local *service_names
279
318
  conns = service_names.map {|sn| services[sn].connect}
280
319
  yield(*conns) if block_given?
@@ -34,7 +34,13 @@ def EasyServe.manage_remote_eval_client msg
34
34
  pr = eval "proc do |conns, host, log| #{eval_string}; end"
35
35
  pr[conns, host, log]
36
36
  rescue => ex
37
- puts "ez error", ex, ex.backtrace
37
+ puts "ez error", ex.inspect
38
+ lineno = (Integer(ex.backtrace[0][/(\d+):/, 1]) rescue nil)
39
+ if lineno
40
+ lines = eval_string.lines
41
+ puts " #{lineno-1} --> " + lines[lineno-1]
42
+ end
43
+ puts ex.backtrace
38
44
  end
39
45
  end
40
46
 
@@ -42,7 +42,7 @@ def EasyServe.manage_remote_run_client msg
42
42
  ro = cl.new(conns, host, log, *args)
43
43
  ro.run
44
44
  rescue => ex
45
- puts "ez error", ex, ex.backtrace
45
+ puts "ez error", ex.inspect, ex.backtrace
46
46
  end
47
47
  end
48
48
 
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easy-serve
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.10'
4
+ version: '0.11'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joel VanderWerf
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-22 00:00:00.000000000 Z
11
+ date: 2014-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  description: Framework for starting tcp/unix services and connected clients under
@@ -33,30 +33,30 @@ extra_rdoc_files:
33
33
  - README.md
34
34
  - COPYING
35
35
  files:
36
- - README.md
37
36
  - COPYING
38
- - lib/easy-serve/remote.rb
39
- - lib/easy-serve/service/accessible.rb
40
- - lib/easy-serve/service/tunnelled.rb
41
- - lib/easy-serve/service.rb
42
- - lib/easy-serve/remote/eval.rb
43
- - lib/easy-serve/remote/run-mgr.rb
44
- - lib/easy-serve/remote/run.rb
45
- - lib/easy-serve/remote/drb.rb
46
- - lib/easy-serve/remote/eval-mgr.rb
47
- - lib/easy-serve.rb
48
- - examples/remote-run.rb
49
- - examples/remote-multi-server.rb
37
+ - README.md
38
+ - examples/multi.rb
50
39
  - examples/passive.rb
51
- - examples/remote-eval-passive.rb
52
40
  - examples/remote-drb.rb
53
- - examples/remote-run-script.rb
54
- - examples/multi.rb
41
+ - examples/remote-eval-passive.rb
42
+ - examples/remote-eval.rb
55
43
  - examples/remote-manual.rb
44
+ - examples/remote-multi-server.rb
45
+ - examples/remote-run-script.rb
46
+ - examples/remote-run.rb
56
47
  - examples/simple.rb
57
48
  - examples/tunnel/client.rb
58
49
  - examples/tunnel/server.rb
59
- - examples/remote-eval.rb
50
+ - lib/easy-serve.rb
51
+ - lib/easy-serve/remote.rb
52
+ - lib/easy-serve/remote/drb.rb
53
+ - lib/easy-serve/remote/eval-mgr.rb
54
+ - lib/easy-serve/remote/eval.rb
55
+ - lib/easy-serve/remote/run-mgr.rb
56
+ - lib/easy-serve/remote/run.rb
57
+ - lib/easy-serve/service.rb
58
+ - lib/easy-serve/service/accessible.rb
59
+ - lib/easy-serve/service/tunnelled.rb
60
60
  homepage: https://github.com/vjoel/easy-serve
61
61
  licenses:
62
62
  - BSD
@@ -84,7 +84,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
84
84
  version: '0'
85
85
  requirements: []
86
86
  rubyforge_project:
87
- rubygems_version: 2.1.11
87
+ rubygems_version: 2.2.2
88
88
  signing_key:
89
89
  specification_version: 4
90
90
  summary: Framework for starting tcp/unix services and connected clients under one