roqua-support 0.1.2.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/CHANGELOG.md +4 -0
- data/Gemfile.lock +4 -4
- data/lib/roqua-support/version.rb +1 -1
- data/lib/roqua/core_ext/activerecord/uniq_find_or_create.rb +12 -0
- data/spec/roqua/core_ext/activerecord/uniq_find_or_create_spec.rb +41 -0
- data/spec/roqua/support/errors_spec.rb +1 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 43a3414d9e81150939fa2856d06119486f2901e2
|
4
|
+
data.tar.gz: 0045f7cbe60fd4bf49ca7aea4eb53aaffcd5b1ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5598469b76b2db4761c05b40ba12d533dac4a85160537fd7c6da0b8eeeaefeead355fef69e7c6c9abc8566b28e090dcc3eb344e1b15541c06addadbe60524f15
|
7
|
+
data.tar.gz: d27f814a7fee1c1009656f386d547c0df7a05612dfba06c330513a4e4e5ace7ed5fefc90570975b0aca573273248ff05f7d0370a463867b12cc1e233f175e9c7
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
roqua-support (0.1.
|
4
|
+
roqua-support (0.1.3)
|
5
5
|
activesupport (>= 3.2, < 5.0)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
|
-
activesupport (4.0.
|
10
|
+
activesupport (4.0.3)
|
11
11
|
i18n (~> 0.6, >= 0.6.4)
|
12
12
|
minitest (~> 4.2)
|
13
13
|
multi_json (~> 1.3)
|
@@ -24,9 +24,9 @@ GEM
|
|
24
24
|
rspec-expectations (~> 2.14.0)
|
25
25
|
rspec-mocks (~> 2.14.0)
|
26
26
|
rspec-core (2.14.7)
|
27
|
-
rspec-expectations (2.14.
|
27
|
+
rspec-expectations (2.14.5)
|
28
28
|
diff-lcs (>= 1.1.3, < 2.0)
|
29
|
-
rspec-mocks (2.14.
|
29
|
+
rspec-mocks (2.14.6)
|
30
30
|
thread_safe (0.1.3)
|
31
31
|
atomic
|
32
32
|
tzinfo (0.3.38)
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'active_support'
|
2
|
+
|
3
|
+
module ActiveRecord
|
4
|
+
class Base
|
5
|
+
def self.uniq_find_or_create_by(attributes, &block)
|
6
|
+
record = find_or_create_by(attributes, &block)
|
7
|
+
rescue ActiveRecord::RecordNotUnique
|
8
|
+
ensure
|
9
|
+
return find_by(attributes) || record
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'roqua/core_ext/activerecord/uniq_find_or_create'
|
2
|
+
|
3
|
+
module ActiveRecord
|
4
|
+
class Base
|
5
|
+
def self.find_by(attributes)
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
class RecordNotUnique < StandardError
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe ActiveRecord::Base do
|
14
|
+
describe '#uniq_find_or_create_by' do
|
15
|
+
let(:attributes) { double('attributes') }
|
16
|
+
let(:block) { -> {} }
|
17
|
+
let(:record) { double('record') }
|
18
|
+
|
19
|
+
it 'tries to find or create a record by the attributes provided' do
|
20
|
+
expect(ActiveRecord::Base).to receive(:find_or_create_by).with(attributes, &block)
|
21
|
+
ActiveRecord::Base.uniq_find_or_create_by attributes, &block
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'returns a preexisting or created record by querying it' do
|
25
|
+
allow(ActiveRecord::Base).to receive(:find_by).with(attributes).and_return record
|
26
|
+
expect(ActiveRecord::Base.uniq_find_or_create_by attributes, &block).to eq(record)
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'returns a concurrenlty created record' do
|
30
|
+
allow(ActiveRecord::Base).to receive(:find_by).with(attributes).and_return record
|
31
|
+
allow(ActiveRecord::Base).to receive(:find_or_create_by).with(attributes, &block)
|
32
|
+
.and_raise ActiveRecord::RecordNotUnique
|
33
|
+
expect(ActiveRecord::Base.uniq_find_or_create_by attributes, &block).to eq(record)
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'returns a created record for inspection when saving fails for some reason' do
|
37
|
+
allow(ActiveRecord::Base).to receive(:find_or_create_by).with(attributes, &block).and_return record
|
38
|
+
expect(ActiveRecord::Base.uniq_find_or_create_by attributes, &block).to eq(record)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -36,6 +36,7 @@ describe 'Error reporting' do
|
|
36
36
|
|
37
37
|
it 'sends notifications to appsignal' do
|
38
38
|
stub_const("Appsignal", Module.new)
|
39
|
+
Appsignal.stub(active?: true)
|
39
40
|
Appsignal.stub(is_ignored_exception?: false, agent: agent)
|
40
41
|
stub_const("Appsignal::Transaction", double("Transaction", create: transaction))
|
41
42
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: roqua-support
|
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
|
- Marten Veldthuis
|
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: activesupport
|
@@ -95,6 +95,7 @@ files:
|
|
95
95
|
- Rakefile
|
96
96
|
- lib/roqua-support.rb
|
97
97
|
- lib/roqua-support/version.rb
|
98
|
+
- lib/roqua/core_ext/activerecord/uniq_find_or_create.rb
|
98
99
|
- lib/roqua/core_ext/array/stable_sort_by.rb
|
99
100
|
- lib/roqua/core_ext/enumerable/sort_by_alphanum.rb
|
100
101
|
- lib/roqua/core_ext/fabrication/singleton.rb
|
@@ -106,6 +107,7 @@ files:
|
|
106
107
|
- lib/roqua/support/logging.rb
|
107
108
|
- lib/roqua/support/request_logger.rb
|
108
109
|
- roqua-support.gemspec
|
110
|
+
- spec/roqua/core_ext/activerecord/uniq_find_or_create_spec.rb
|
109
111
|
- spec/roqua/core_ext/array/stable_sort_by_spec.rb
|
110
112
|
- spec/roqua/core_ext/enumerable/sort_by_alphanum_spec.rb
|
111
113
|
- spec/roqua/core_ext/fabrication/singleton_spec.rb
|
@@ -139,6 +141,7 @@ signing_key:
|
|
139
141
|
specification_version: 4
|
140
142
|
summary: Helper objects and proxies used by a lot of RoQua applications
|
141
143
|
test_files:
|
144
|
+
- spec/roqua/core_ext/activerecord/uniq_find_or_create_spec.rb
|
142
145
|
- spec/roqua/core_ext/array/stable_sort_by_spec.rb
|
143
146
|
- spec/roqua/core_ext/enumerable/sort_by_alphanum_spec.rb
|
144
147
|
- spec/roqua/core_ext/fabrication/singleton_spec.rb
|