daemon_runner 0.4.1 → 0.4.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9a40696f28e6af1d205de21719f33bcd617b3a6a
4
- data.tar.gz: 72d29ef5129936ee5a64c0f159b32db2966f5a32
3
+ metadata.gz: 8f9b54559e80630efbf1a6a5b6f459888cd296f9
4
+ data.tar.gz: a7f763bdc385cc88ee530550476d9c4baf1a3cd3
5
5
  SHA512:
6
- metadata.gz: 05d11eb3122cd995603c1e21b0d66af72a467dfac4cf1a701e32260744eb09d6dc808a966a17547024d08d685ef5306a9391fc937bd906ffed6465ad1c4f0272
7
- data.tar.gz: 0f2202f3091650a471edab3567a51fa7b1f76b9dd2f2147f701c38fc41f62625910e4be0ce7278d8350839e0d5ca29d2e82e9ee3958da188b426d33067395eff
6
+ metadata.gz: ed46495953d0fdb759470475c3f25b97428be13a3c25f391a3b3271d18ffd808e69ff2b79dfd949be36b6ca649c436f4413c1dc2dd78ca3a9244b126a861ca85
7
+ data.tar.gz: 332319f3d280c60481831f5a1d4e8abe0059517bb4bb79bd19d6cb508521f6b9f43b28c1b5300ebc7843432a0016f83d25f1366f8cfc4cbb72a4624b199c1d5f
data/README.md CHANGED
@@ -168,7 +168,7 @@ Locking can be done either via an exclusive lock or a semaphore lock. The major
168
168
  **TBD**
169
169
 
170
170
  #### Semaphore Lock
171
- For an example of how to implement semaphore locking take a look at the [example](/examples/example_semaphore.rb)
171
+ For an example of how to implement semaphore locking take a look at the [manual locking example](/examples/example_semaphore.rb) and the [slightly more automatic version](/examples/example_semaphore_release.rb).
172
172
 
173
173
 
174
174
  ## Development
@@ -5,7 +5,27 @@ require 'dev/consul'
5
5
 
6
6
  @service = 'myservice'
7
7
  @lock_count = 3
8
- @locked = false
8
+ @lock_time = 10
9
9
 
10
- @semaphore = DaemonRunner::Semaphore.start(@service)
11
- DaemonRunner::Semaphore.lock(@lock_count)
10
+ ::Dev::Consul.run
11
+ ::Dev::Consul.wait
12
+
13
+ # Get a new semaphore
14
+ @semaphore = DaemonRunner::Semaphore.lock(@service, @lock_count)
15
+
16
+ # Spawn a thread to handle renewing the lock
17
+ @renew_thread = @semaphore.renew
18
+
19
+ # Do whatever kind of work you want
20
+ @lock_time.downto(0).each do |i|
21
+ puts "Releasing lock in #{i} seconds"
22
+ sleep 1
23
+ end
24
+
25
+ # Kill the thread when you're done
26
+ @renew_thread.kill
27
+
28
+ # Explicitly release the semaphore when you're done
29
+ @semaphore.release
30
+
31
+ ::Dev::Consul.stop
@@ -5,12 +5,16 @@ require 'dev/consul'
5
5
 
6
6
  @service = 'myreleaseservice'
7
7
  @lock_count = 3
8
- @locked = false
9
8
  @lock_time = 10
10
9
 
10
+ ::Dev::Consul.run
11
+ ::Dev::Consul.wait
12
+
11
13
  DaemonRunner::Semaphore.lock(@service, @lock_count) do
12
14
  @lock_time.downto(0).each do |i|
13
15
  puts "Releasing lock in #{i} seconds"
14
16
  sleep 1
15
17
  end
16
18
  end
19
+
20
+ ::Dev::Consul.stop
@@ -19,17 +19,19 @@ module DaemonRunner
19
19
  semaphore = Semaphore.new(options)
20
20
  semaphore.lock
21
21
  if block_given?
22
- lock_thr = semaphore.renew
23
- yield
22
+ begin
23
+ lock_thr = semaphore.renew
24
+ yield
25
+ ensure
26
+ lock_thr.kill unless lock_thr.nil?
27
+ semaphore.release
28
+ end
24
29
  end
25
30
  semaphore
26
31
  rescue Exception => e
27
32
  logger.error e
28
33
  logger.debug e.backtrace.join("\n")
29
34
  raise
30
- ensure
31
- lock_thr.kill
32
- semaphore.release
33
35
  end
34
36
  end
35
37
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: daemon_runner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Thompson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-11-15 00:00:00.000000000 Z
11
+ date: 2016-11-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logging