easy-serve 0.11 → 0.12
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/easy-serve.rb +52 -22
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5c1e18a947084b2aa2f1508159eef9d102f90d0f
|
4
|
+
data.tar.gz: ae49fefd0aa53336007d2745d0f5471970950aac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b4d08db27f7c8240213ac5934cfafa08bb595b6dbea4402e09b09102f0b84133ef018f912868349166940d9c7c74b45fc3cc3b0acccb97372c6bb4814434d87f
|
7
|
+
data.tar.gz: e1551d47c03786400d81a0e949fd94cc18e153faebc58345e3d540a40db9950b372903135b534cf040ef2471aa0a0b97b6d9b89dee4d7e6f19962b7dcef86fb8
|
data/lib/easy-serve.rb
CHANGED
@@ -6,8 +6,10 @@ require 'fileutils'
|
|
6
6
|
require 'easy-serve/service'
|
7
7
|
|
8
8
|
class EasyServe
|
9
|
-
VERSION = "0.
|
10
|
-
|
9
|
+
VERSION = "0.12"
|
10
|
+
|
11
|
+
class ServicesExistError < RuntimeError; end
|
12
|
+
|
11
13
|
class EasyFormatter < Logger::Formatter
|
12
14
|
Format = "%s: %s: %s\n"
|
13
15
|
|
@@ -70,6 +72,7 @@ class EasyServe
|
|
70
72
|
#
|
71
73
|
def initialize **opts
|
72
74
|
@services_file = opts[:services_file]
|
75
|
+
@created_services_file = false
|
73
76
|
@interactive = opts[:interactive]
|
74
77
|
@log = opts[:log] || self.class.null_logger
|
75
78
|
@children = [] # pid
|
@@ -148,7 +151,7 @@ class EasyServe
|
|
148
151
|
service.cleanup
|
149
152
|
end
|
150
153
|
|
151
|
-
if
|
154
|
+
if @created_services_file
|
152
155
|
begin
|
153
156
|
FileUtils.rm services_file
|
154
157
|
rescue Errno::ENOENT
|
@@ -161,32 +164,59 @@ class EasyServe
|
|
161
164
|
end
|
162
165
|
|
163
166
|
def start_services
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
167
|
+
return unless @owner
|
168
|
+
|
169
|
+
if not services_file
|
170
|
+
log.debug {"starting services without services_file"}
|
171
|
+
yield
|
172
|
+
return
|
173
|
+
end
|
174
|
+
|
175
|
+
lock_success = with_lock_file *File.split(services_file) do
|
176
|
+
# Successful creation of the lock file gives this process the
|
177
|
+
# right to check and create the services_file itself.
|
178
|
+
|
179
|
+
if File.exist? services_file
|
180
|
+
raise ServicesExistError,
|
181
|
+
"Services at #{services_file.inspect} already exist."
|
173
182
|
end
|
174
183
|
|
175
|
-
log.debug {"starting services"}
|
184
|
+
log.debug {"starting services stored in #{services_file.inspect}"}
|
176
185
|
yield
|
177
186
|
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
YAML.dump(services, f)
|
182
|
-
end
|
183
|
-
ensure
|
184
|
-
FileUtils.rm_f ".lock.#{services_file}"
|
185
|
-
end
|
187
|
+
tmp = services_file + ".tmp"
|
188
|
+
File.open(tmp, "w") do |f|
|
189
|
+
YAML.dump(services, f)
|
186
190
|
end
|
191
|
+
FileUtils.mv(tmp, services_file)
|
192
|
+
@created_services_file = true
|
193
|
+
end
|
194
|
+
|
195
|
+
unless lock_success
|
196
|
+
raise ServicesExistError,
|
197
|
+
"Services at #{services_file.inspect} are being created."
|
187
198
|
end
|
188
199
|
end
|
189
|
-
|
200
|
+
|
201
|
+
# Returns true if this process got the lock.
|
202
|
+
def with_lock_file dir, base
|
203
|
+
lock_file = File.join(dir, ".lock.#{base}")
|
204
|
+
|
205
|
+
begin
|
206
|
+
FileUtils.ln_s ".#{Process.pid}.#{base}", lock_file
|
207
|
+
rescue Errno::EEXIST
|
208
|
+
return false
|
209
|
+
end
|
210
|
+
|
211
|
+
begin
|
212
|
+
yield
|
213
|
+
ensure
|
214
|
+
FileUtils.rm_f lock_file
|
215
|
+
end
|
216
|
+
|
217
|
+
true
|
218
|
+
end
|
219
|
+
|
190
220
|
def tmpdir
|
191
221
|
@tmpdir ||= begin
|
192
222
|
require 'tmpdir'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: easy-serve
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.12'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joel VanderWerf
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-02-
|
11
|
+
date: 2014-02-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: msgpack
|