incremental_backup 0.1.2 → 0.1.3

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: 8f406c74bc2c38c08092f0d93b5156c78c196aa4
4
- data.tar.gz: 22dfd35797a0b24abbf3a5752161e5dece0fc394
3
+ metadata.gz: 55816485677ef959a89ab2b21baaae7d5f253c06
4
+ data.tar.gz: 65f9e303fd3ad201d4dfd146581c86e275bdea95
5
5
  SHA512:
6
- metadata.gz: fd12559460f18568aa9adcb0644ff48db2d88cc12e3f814e646fcfbdc17114a18b9ee0fd3430517aaa18b5bd5a6965ab8a8fed6582ee217fb0624c52d0f4fb3a
7
- data.tar.gz: 8a5c7554e2d044590aa27f241f62fe4cd6c8ad49bd6af084c399d759f94c5c82bca674ca7272c6b044ee40bd78b73501c04206f236070950b6c8b6b010af5d82
6
+ metadata.gz: a87c946b7933ad50fc901d1b61623eef3e5659239fdc71173ba35bff18a5bb0c7d2e2f46c268cdba1a06599831807220fff38b798796403f2fe8dc46a320807d
7
+ data.tar.gz: f037901df777dd755a40e40233d345732173c4901314df66fc5d7b27527fc638e4064732d06069fcce89fa9c7c9dd9348f4f6fd0d6f1cfbb5d7923255eb5236a
@@ -11,10 +11,9 @@ module IncrementalBackup
11
11
  def initialize task
12
12
  @task = task
13
13
 
14
- if File.exists? path
14
+ @lock_file = File.open(path, File::RDWR|File::CREAT, 0644)
15
+ unless @lock_file.flock(File::LOCK_EX|File::LOCK_NB)
15
16
  self.failed = true
16
- else
17
- FileUtils.touch path
18
17
  end
19
18
  end
20
19
 
@@ -44,7 +43,7 @@ module IncrementalBackup
44
43
 
45
44
  # Release lock
46
45
  def release
47
- FileUtils.rm path
46
+ @lock_file.close if @lock_file
48
47
  end
49
48
 
50
49
  private
@@ -1,3 +1,3 @@
1
1
  module IncrementalBackup
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ describe IncrementalBackup::Lock do
4
+
5
+ # Mocks
6
+ let(:task) { double("task", logger: logger, settings: settings) }
7
+ let(:logger) { double("logger", info: nil) }
8
+ let(:settings) { double("settings", settings_path: settings_path, task_id: task_id) }
9
+
10
+ # Settings
11
+ let(:settings_path) { File.join __dir__, "..", "tmp" }
12
+ let(:task_id) { "example_task" }
13
+
14
+
15
+ it 'can run' do
16
+ ran = false
17
+ IncrementalBackup::Lock.create task do
18
+ ran = true
19
+ end
20
+ ran.should be_true
21
+ end
22
+
23
+ it 'can lock' do
24
+ ran_outer = false
25
+ ran_inner = false
26
+
27
+ IncrementalBackup::Lock.create task do
28
+ ran_outer = true
29
+ IncrementalBackup::Lock.create task do
30
+ ran_inner = true
31
+ end
32
+ end
33
+ ran_outer.should be_true
34
+ ran_inner.should be_false
35
+ end
36
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: incremental_backup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lasse Skindstad Ebert
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-17 00:00:00.000000000 Z
11
+ date: 2013-05-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -133,6 +133,7 @@ files:
133
133
  - live_example/example_task.rb
134
134
  - live_example/exclude.file
135
135
  - spec/spec_helper.rb
136
+ - spec/unit/lock_spec.rb
136
137
  - spec/unit/task_settings_spec.rb
137
138
  - spec/unit/task_spec.rb
138
139
  - spec/unit/version_spec.rb
@@ -162,6 +163,7 @@ summary: incremental_backup can make incremental backups by hour/day/week/month/
162
163
  remotely through ssh and rsync
163
164
  test_files:
164
165
  - spec/spec_helper.rb
166
+ - spec/unit/lock_spec.rb
165
167
  - spec/unit/task_settings_spec.rb
166
168
  - spec/unit/task_spec.rb
167
169
  - spec/unit/version_spec.rb