padlock-rails 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 +4 -4
- data/.travis.yml +1 -1
- data/LICENSE.txt +1 -1
- data/lib/padlock.rb +5 -8
- data/lib/padlock/version.rb +1 -1
- data/padlock.gemspec +3 -2
- data/spec/padlock/padlock_spec.rb +6 -8
- data/spec/padlock/user_spec.rb +2 -2
- data/spec/spec_helper.rb +4 -0
- metadata +21 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 046dbff378af3e17c6b661acaf2683015ea4e50a
|
4
|
+
data.tar.gz: a8c5353ef666185cfb5b8deb09c3d2019f398e09
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 016cdd6415ca9fe2b23ebd57f6cb4ec055157c3af9a611d7d3648961c4d4e682bfd10f2545cc66e297b7558c68615bdf1c34a318f95a9cc1d0df99a0730846ee
|
7
|
+
data.tar.gz: 46140f2386b0606946d5a9122e8af328547b3ba6de847b3225e9d9fd6259be1ec4997aaf54384f0d3eb7587311b3b597e4cb16322d3c477ae3d086b56aaedbb4
|
data/.travis.yml
CHANGED
data/LICENSE.txt
CHANGED
data/lib/padlock.rb
CHANGED
@@ -4,7 +4,7 @@ require "active_record"
|
|
4
4
|
module Padlock
|
5
5
|
class << self
|
6
6
|
def config
|
7
|
-
|
7
|
+
@config ||= OpenStruct.new(
|
8
8
|
table_name: "padlocks",
|
9
9
|
user_foreign_key: "user_id",
|
10
10
|
user_class_name: "User",
|
@@ -25,7 +25,7 @@ module Padlock
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def unlock! *objects
|
28
|
-
objects.each
|
28
|
+
objects.each(&:unlock!)
|
29
29
|
end
|
30
30
|
|
31
31
|
def unlocked? object
|
@@ -37,18 +37,15 @@ module Padlock
|
|
37
37
|
end
|
38
38
|
|
39
39
|
def touch *objects
|
40
|
-
objects.each do |object|
|
41
|
-
|
42
|
-
object.updated_at = Time.now
|
43
|
-
object.save
|
44
|
-
end
|
40
|
+
objects.select(&:locked?).each do |object|
|
41
|
+
object.update_attribute(:updated_at, Time.zone.now)
|
45
42
|
end
|
46
43
|
end
|
47
44
|
|
48
45
|
private
|
49
46
|
|
50
47
|
def timeout
|
51
|
-
Time.now - config.timeout
|
48
|
+
Time.zone.now - config.timeout
|
52
49
|
end
|
53
50
|
|
54
51
|
def stale_locks
|
data/lib/padlock/version.rb
CHANGED
data/padlock.gemspec
CHANGED
@@ -18,9 +18,10 @@ Gem::Specification.new do |spec|
|
|
18
18
|
|
19
19
|
spec.add_development_dependency "bundler", ">= 1.3"
|
20
20
|
spec.add_development_dependency "rake"
|
21
|
-
spec.add_development_dependency "rspec", ">=
|
21
|
+
spec.add_development_dependency "rspec", ">= 3.0"
|
22
|
+
spec.add_development_dependency "rspec-its"
|
22
23
|
spec.add_development_dependency "generator_spec"
|
23
|
-
spec.add_development_dependency "sqlite3", ">= 1.3.
|
24
|
+
spec.add_development_dependency "sqlite3", ">= 1.3.13"
|
24
25
|
spec.add_development_dependency "pry"
|
25
26
|
spec.add_development_dependency "activerecord", ">= 4.0.0"
|
26
27
|
end
|
@@ -56,7 +56,7 @@ describe Padlock do
|
|
56
56
|
|
57
57
|
it do
|
58
58
|
object.should_receive(:locked?).and_return(true)
|
59
|
-
expect(Padlock.locked?(object)).to
|
59
|
+
expect(Padlock.locked?(object)).to eq true
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
@@ -83,14 +83,14 @@ describe Padlock do
|
|
83
83
|
|
84
84
|
it do
|
85
85
|
object.should_receive(:unlocked?).and_return(true)
|
86
|
-
expect(Padlock.unlocked?(object)).to
|
86
|
+
expect(Padlock.unlocked?(object)).to eq true
|
87
87
|
end
|
88
88
|
end
|
89
89
|
|
90
90
|
describe ".unlock_stale" do
|
91
|
-
let(:object) { LockableObject.create!(created_at: Time.now - 1.week, updated_at: updated_at) }
|
91
|
+
let(:object) { LockableObject.create!(created_at: Time.zone.now - 1.week, updated_at: updated_at) }
|
92
92
|
let(:locked?) { true }
|
93
|
-
let(:updated_at) { Time.now - 2.hours }
|
93
|
+
let(:updated_at) { Time.zone.now - 2.hours }
|
94
94
|
let(:fake_relation) { double(:fake_relation) }
|
95
95
|
|
96
96
|
before do
|
@@ -118,8 +118,7 @@ describe Padlock do
|
|
118
118
|
let(:locked?) { true }
|
119
119
|
|
120
120
|
it "sets a new value on the updated_at column and saves it" do
|
121
|
-
expect(object).to receive(:updated_at
|
122
|
-
expect(object).to receive(:save)
|
121
|
+
expect(object).to receive(:update_attribute).with(:updated_at, anything)
|
123
122
|
Padlock.touch(object)
|
124
123
|
end
|
125
124
|
end
|
@@ -128,8 +127,7 @@ describe Padlock do
|
|
128
127
|
let(:locked?) { false }
|
129
128
|
|
130
129
|
it "leaves the object uneffected" do
|
131
|
-
expect(object).to_not receive(:
|
132
|
-
expect(object).to_not receive(:save)
|
130
|
+
expect(object).to_not receive(:update_attribute)
|
133
131
|
Padlock.touch(object)
|
134
132
|
end
|
135
133
|
end
|
data/spec/padlock/user_spec.rb
CHANGED
@@ -44,12 +44,12 @@ describe User do
|
|
44
44
|
|
45
45
|
context "when included" do
|
46
46
|
let(:include?) { true }
|
47
|
-
it { expect(subject.locked?(object)).to
|
47
|
+
it { expect(subject.locked?(object)).to eq true }
|
48
48
|
end
|
49
49
|
|
50
50
|
context "when not included" do
|
51
51
|
let(:include?) { false }
|
52
|
-
it { expect(subject.locked?(object)).to
|
52
|
+
it { expect(subject.locked?(object)).to eq false }
|
53
53
|
end
|
54
54
|
end
|
55
55
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -2,6 +2,7 @@ require 'rubygems'
|
|
2
2
|
require 'active_record'
|
3
3
|
require 'rspec'
|
4
4
|
require 'rspec/autorun'
|
5
|
+
require 'rspec/its'
|
5
6
|
require 'pry'
|
6
7
|
require "generator_spec"
|
7
8
|
|
@@ -14,6 +15,9 @@ require 'padlock'
|
|
14
15
|
RSpec.configure do |c|
|
15
16
|
c.before(:all) { setup_db }
|
16
17
|
c.after(:all) { teardown_db }
|
18
|
+
c.before(:suite) do
|
19
|
+
Time.zone = 'Pacific Time (US & Canada)'
|
20
|
+
end
|
17
21
|
end
|
18
22
|
|
19
23
|
ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: padlock-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Coding Zeal
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2017-01-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -45,14 +45,28 @@ dependencies:
|
|
45
45
|
requirements:
|
46
46
|
- - ">="
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version:
|
48
|
+
version: '3.0'
|
49
49
|
type: :development
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
53
|
- - ">="
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version:
|
55
|
+
version: '3.0'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: rspec-its
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
56
70
|
- !ruby/object:Gem::Dependency
|
57
71
|
name: generator_spec
|
58
72
|
requirement: !ruby/object:Gem::Requirement
|
@@ -73,14 +87,14 @@ dependencies:
|
|
73
87
|
requirements:
|
74
88
|
- - ">="
|
75
89
|
- !ruby/object:Gem::Version
|
76
|
-
version: 1.3.
|
90
|
+
version: 1.3.13
|
77
91
|
type: :development
|
78
92
|
prerelease: false
|
79
93
|
version_requirements: !ruby/object:Gem::Requirement
|
80
94
|
requirements:
|
81
95
|
- - ">="
|
82
96
|
- !ruby/object:Gem::Version
|
83
|
-
version: 1.3.
|
97
|
+
version: 1.3.13
|
84
98
|
- !ruby/object:Gem::Dependency
|
85
99
|
name: pry
|
86
100
|
requirement: !ruby/object:Gem::Requirement
|
@@ -158,7 +172,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
158
172
|
version: '0'
|
159
173
|
requirements: []
|
160
174
|
rubyforge_project:
|
161
|
-
rubygems_version: 2.
|
175
|
+
rubygems_version: 2.5.2
|
162
176
|
signing_key:
|
163
177
|
specification_version: 4
|
164
178
|
summary: Lock a record for editing to avoid concurrent editing collision prevention
|