find_or_create_on_scopes 1.4.1 → 1.5.0
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/find_or_create_on_scopes.gemspec +36 -33
- data/lib/find_or_create_on_scopes.rb +10 -4
- metadata +18 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e02fbd2dde3e73f06a09a4537ef772333b7eb16a
|
4
|
+
data.tar.gz: 444d64b0f515a81f26c914f3819b3ba30ab7986d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 22727b20c04b72f74e880ada52e751286957f0b5b262908a0f02a5415c4c28184e9c5804e341656c83c4b8e90ae21a91045cbb347f5658b3f85ef070a49bb8ef
|
7
|
+
data.tar.gz: a0e59d1ddb21206af1d8c5ca98fa6d32ae6950a686e6956b22ef28c0103b0d322efe2255582970a926d82d73a3ed22361630177a948a86309a7cb03b937edb34
|
@@ -1,19 +1,19 @@
|
|
1
|
-
# Generated by
|
1
|
+
# Generated by juwelier
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit
|
3
|
+
# Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: find_or_create_on_scopes 1.
|
5
|
+
# stub: find_or_create_on_scopes 1.5.0 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
|
-
s.name = "find_or_create_on_scopes"
|
9
|
-
s.version = "1.
|
8
|
+
s.name = "find_or_create_on_scopes".freeze
|
9
|
+
s.version = "1.5.0"
|
10
10
|
|
11
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
|
-
s.require_paths = ["lib"]
|
13
|
-
s.authors = ["Tim Morgan"]
|
14
|
-
s.date = "2016-
|
15
|
-
s.description = "Adds methods to ActiveRecord for conditionally finding, creating, or updating records."
|
16
|
-
s.email = "git@timothymorgan.info"
|
11
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
12
|
+
s.require_paths = ["lib".freeze]
|
13
|
+
s.authors = ["Tim Morgan".freeze]
|
14
|
+
s.date = "2016-05-07"
|
15
|
+
s.description = "Adds methods to ActiveRecord for conditionally finding, creating, or updating records.".freeze
|
16
|
+
s.email = "git@timothymorgan.info".freeze
|
17
17
|
s.extra_rdoc_files = [
|
18
18
|
"LICENSE",
|
19
19
|
"README.md"
|
@@ -24,36 +24,39 @@ Gem::Specification.new do |s|
|
|
24
24
|
"find_or_create_on_scopes.gemspec",
|
25
25
|
"lib/find_or_create_on_scopes.rb"
|
26
26
|
]
|
27
|
-
s.homepage = "http://github.com/riscfuture/find_or_create_on_scopes"
|
28
|
-
s.required_ruby_version = Gem::Requirement.new(">= 1.9")
|
29
|
-
s.rubygems_version = "2.
|
30
|
-
s.summary = "find_or_create-type methods on ActiveRecord scopes"
|
27
|
+
s.homepage = "http://github.com/riscfuture/find_or_create_on_scopes".freeze
|
28
|
+
s.required_ruby_version = Gem::Requirement.new(">= 1.9".freeze)
|
29
|
+
s.rubygems_version = "2.6.3".freeze
|
30
|
+
s.summary = "find_or_create-type methods on ActiveRecord scopes".freeze
|
31
31
|
|
32
32
|
if s.respond_to? :specification_version then
|
33
33
|
s.specification_version = 4
|
34
34
|
|
35
35
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
36
|
-
s.add_runtime_dependency(%q<activerecord
|
37
|
-
s.add_development_dependency(%q<
|
38
|
-
s.add_development_dependency(%q<yard
|
39
|
-
s.add_development_dependency(%q<redcarpet
|
40
|
-
s.add_development_dependency(%q<sqlite3
|
41
|
-
s.add_development_dependency(%q<
|
36
|
+
s.add_runtime_dependency(%q<activerecord>.freeze, [">= 3.1"])
|
37
|
+
s.add_development_dependency(%q<juwelier>.freeze, [">= 0"])
|
38
|
+
s.add_development_dependency(%q<yard>.freeze, [">= 0"])
|
39
|
+
s.add_development_dependency(%q<redcarpet>.freeze, [">= 0"])
|
40
|
+
s.add_development_dependency(%q<sqlite3>.freeze, [">= 0"])
|
41
|
+
s.add_development_dependency(%q<activerecord-jdbcsqlite3-adapter>.freeze, [">= 0"])
|
42
|
+
s.add_development_dependency(%q<rspec>.freeze, [">= 0"])
|
42
43
|
else
|
43
|
-
s.add_dependency(%q<activerecord
|
44
|
-
s.add_dependency(%q<
|
45
|
-
s.add_dependency(%q<yard
|
46
|
-
s.add_dependency(%q<redcarpet
|
47
|
-
s.add_dependency(%q<sqlite3
|
48
|
-
s.add_dependency(%q<
|
44
|
+
s.add_dependency(%q<activerecord>.freeze, [">= 3.1"])
|
45
|
+
s.add_dependency(%q<juwelier>.freeze, [">= 0"])
|
46
|
+
s.add_dependency(%q<yard>.freeze, [">= 0"])
|
47
|
+
s.add_dependency(%q<redcarpet>.freeze, [">= 0"])
|
48
|
+
s.add_dependency(%q<sqlite3>.freeze, [">= 0"])
|
49
|
+
s.add_dependency(%q<activerecord-jdbcsqlite3-adapter>.freeze, [">= 0"])
|
50
|
+
s.add_dependency(%q<rspec>.freeze, [">= 0"])
|
49
51
|
end
|
50
52
|
else
|
51
|
-
s.add_dependency(%q<activerecord
|
52
|
-
s.add_dependency(%q<
|
53
|
-
s.add_dependency(%q<yard
|
54
|
-
s.add_dependency(%q<redcarpet
|
55
|
-
s.add_dependency(%q<sqlite3
|
56
|
-
s.add_dependency(%q<
|
53
|
+
s.add_dependency(%q<activerecord>.freeze, [">= 3.1"])
|
54
|
+
s.add_dependency(%q<juwelier>.freeze, [">= 0"])
|
55
|
+
s.add_dependency(%q<yard>.freeze, [">= 0"])
|
56
|
+
s.add_dependency(%q<redcarpet>.freeze, [">= 0"])
|
57
|
+
s.add_dependency(%q<sqlite3>.freeze, [">= 0"])
|
58
|
+
s.add_dependency(%q<activerecord-jdbcsqlite3-adapter>.freeze, [">= 0"])
|
59
|
+
s.add_dependency(%q<rspec>.freeze, [">= 0"])
|
57
60
|
end
|
58
61
|
end
|
59
62
|
|
@@ -2,6 +2,10 @@
|
|
2
2
|
|
3
3
|
module FindOrCreateOnScopes
|
4
4
|
|
5
|
+
# Return this in a block from `find_or_create` or `create_or_update` to abort
|
6
|
+
# the creation/updating of a record.
|
7
|
+
ABORT_SAVE = Object.new
|
8
|
+
|
5
9
|
# Locates a record according to the current scope. Returns the record if
|
6
10
|
# found. If not found, creates a new record with the attributes of the current
|
7
11
|
# scope and the provided attributes.
|
@@ -10,6 +14,7 @@ module FindOrCreateOnScopes
|
|
10
14
|
# @yield [record] Yields the record before it is saved.
|
11
15
|
# @yieldparam [ActiveRecord::Base] record The found or created record before
|
12
16
|
# it is saved.
|
17
|
+
# @yieldreturn [ABORT_SAVE, nil] If `ABORT_SAVE` the record is not saved.
|
13
18
|
# @return [ActiveRecord::Base] The found or created record.
|
14
19
|
|
15
20
|
def find_or_create(*args, &block)
|
@@ -42,6 +47,7 @@ module FindOrCreateOnScopes
|
|
42
47
|
# @yield [record] Yields the record before it is saved.
|
43
48
|
# @yieldparam [ActiveRecord::Base] record The found or created record before
|
44
49
|
# it is saved.
|
50
|
+
# @yieldreturn [ABORT_SAVE, nil] If `ABORT_SAVE` the record is not saved.
|
45
51
|
# @return [ActiveRecord::Base] The found or created record.
|
46
52
|
|
47
53
|
def create_or_update(*args, &block)
|
@@ -74,8 +80,8 @@ module FindOrCreateOnScopes
|
|
74
80
|
transaction do
|
75
81
|
record = first || new(*args)
|
76
82
|
if record.new_record?
|
77
|
-
yield
|
78
|
-
record.send(meth) if meth
|
83
|
+
result = block_given? ? yield(record) : nil
|
84
|
+
record.send(meth) if meth && result != ABORT_SAVE
|
79
85
|
end
|
80
86
|
end
|
81
87
|
return record
|
@@ -101,8 +107,8 @@ module FindOrCreateOnScopes
|
|
101
107
|
transaction do
|
102
108
|
record = first || new
|
103
109
|
record.assign_attributes(*args) unless args.empty?
|
104
|
-
yield
|
105
|
-
record.send(meth) if meth
|
110
|
+
result = block_given? ? yield(record) : nil
|
111
|
+
record.send(meth) if meth && result != ABORT_SAVE
|
106
112
|
end
|
107
113
|
return record
|
108
114
|
rescue => err
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: find_or_create_on_scopes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tim Morgan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-05-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -25,7 +25,7 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '3.1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: juwelier
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: activerecord-jdbcsqlite3-adapter
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: rspec
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -126,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
126
140
|
version: '0'
|
127
141
|
requirements: []
|
128
142
|
rubyforge_project:
|
129
|
-
rubygems_version: 2.
|
143
|
+
rubygems_version: 2.6.3
|
130
144
|
signing_key:
|
131
145
|
specification_version: 4
|
132
146
|
summary: find_or_create-type methods on ActiveRecord scopes
|