set_as_primary 0.1.3 → 0.1.4
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/.codeclimate.yml +4 -0
- data/.github/workflows/build.yml +51 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +1 -6
- data/CHANGELOG.md +4 -0
- data/Gemfile +1 -7
- data/README.md +8 -8
- data/Rakefile +17 -4
- data/lib/set_as_primary/version.rb +1 -1
- data/lib/set_as_primary.rb +12 -12
- data/set_as_primary.gemspec +6 -2
- metadata +68 -12
- data/.travis.yml +0 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a40b7a86d9667aee2c14855f55f94324e19ef0c6d954eabcb6577af9b3cf3d95
|
4
|
+
data.tar.gz: c039891d9c5624b9e510d4444c3b47a189b6c0631e69906ce0eb7463678ab5c1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f3481d0945c57108cf6dd3f7080c15dfd78f03db2c3d47251ff3b02223551cc921021ad27fb2b5486402e2d3e07615d223377925b45fe5ca59b2b991621f7e2
|
7
|
+
data.tar.gz: 2de3b4e8a4b56c54efffa65426581449c01cdf892e0925b71e09ebc69aaa8e95c1f8edf273b14bfed87b0a4bdf27d0286dc53632d116d1940d18c6bfa99a4e6e
|
data/.codeclimate.yml
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
name: build
|
2
|
+
on: [push, pull_request]
|
3
|
+
jobs:
|
4
|
+
build:
|
5
|
+
strategy:
|
6
|
+
matrix:
|
7
|
+
include:
|
8
|
+
- ruby: 3.0
|
9
|
+
gemfile: test/gemfiles/activerecord61.gemfile
|
10
|
+
- ruby: 3.1
|
11
|
+
gemfile: Gemfile
|
12
|
+
runs-on: ubuntu-latest
|
13
|
+
env:
|
14
|
+
CC_TEST_REPORTER_ID: 353b5634de390dad574939f59c2ef3798b81f06df548f7bdd11cd8225be484f3
|
15
|
+
steps:
|
16
|
+
- name: Checkout code
|
17
|
+
uses: actions/checkout@v2
|
18
|
+
|
19
|
+
- name: Set up Ruby
|
20
|
+
uses: ruby/setup-ruby@v1
|
21
|
+
with:
|
22
|
+
ruby-version: ${{ matrix.ruby }}
|
23
|
+
bundler-cache: true
|
24
|
+
|
25
|
+
- name: Install Bundler
|
26
|
+
run: gem install bundler
|
27
|
+
|
28
|
+
- name: Install dependencies
|
29
|
+
run: bundle install
|
30
|
+
|
31
|
+
- name: Set up Code Climate Test Reporter
|
32
|
+
run: |
|
33
|
+
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
34
|
+
chmod +x ./cc-test-reporter
|
35
|
+
./cc-test-reporter before-build
|
36
|
+
|
37
|
+
- uses: ankane/setup-postgres@v1
|
38
|
+
with:
|
39
|
+
database: set_as_primary_test
|
40
|
+
|
41
|
+
- uses: ankane/setup-mysql@v1
|
42
|
+
with:
|
43
|
+
database: set_as_primary_test
|
44
|
+
- run: mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
|
45
|
+
|
46
|
+
- name: Run tests
|
47
|
+
run: bundle exec rake test
|
48
|
+
|
49
|
+
- name: Upload test coverage results to Code Climate
|
50
|
+
if: always() && ${{ github.ref == 'refs/heads/master' }} # Adjust the branch name if needed
|
51
|
+
run: ./cc-test-reporter after-build --debug
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
@@ -165,10 +165,6 @@ Style/StringLiterals:
|
|
165
165
|
Enabled: true
|
166
166
|
EnforcedStyle: double_quotes
|
167
167
|
|
168
|
-
# Detect hard tabs, no hard tabs.
|
169
|
-
Layout/Tab:
|
170
|
-
Enabled: true
|
171
|
-
|
172
168
|
# Blank lines should not have any spaces.
|
173
169
|
Layout/TrailingEmptyLines:
|
174
170
|
Enabled: true
|
@@ -249,5 +245,4 @@ Performance/ReverseEach:
|
|
249
245
|
Enabled: true
|
250
246
|
|
251
247
|
Performance/UnfreezeString:
|
252
|
-
Enabled: true
|
253
|
-
|
248
|
+
Enabled: true
|
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
@@ -5,10 +5,4 @@ source "https://rubygems.org"
|
|
5
5
|
# Specify your gem's dependencies in set_as_primary.gemspec
|
6
6
|
gemspec
|
7
7
|
|
8
|
-
gem "activerecord", "~>
|
9
|
-
|
10
|
-
group :development do
|
11
|
-
gem "rubocop", ">= 0.47"
|
12
|
-
gem "rubocop-performance"
|
13
|
-
gem "rubocop-rails"
|
14
|
-
end
|
8
|
+
gem "activerecord", "~> 7.0.0"
|
data/README.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# SetAsPrimary
|
2
2
|
|
3
|
+
[](https://github.com/mechanicles/set_as_primary/actions)
|
4
|
+
[](https://codeclimate.com/github/mechanicles/set_as_primary/maintainability)
|
5
|
+
[](https://codeclimate.com/github/mechanicles/set_as_primary/test_coverage)
|
6
|
+
|
7
|
+
[Demo Rails application](https://cryptic-lake-90495.herokuapp.com/) |
|
8
|
+
[Source code of Demo Rails application](https://github.com/mechanicles/set_as_primary_rails_app)
|
9
|
+
|
3
10
|
The simplest way to handle the primary or default flag to
|
4
11
|
your Rails models.
|
5
12
|
|
@@ -10,13 +17,6 @@ Features:
|
|
10
17
|
* Supports PostgreSQL's unique partial index (constraint)
|
11
18
|
* Supports PostgreSQL, MySQL, and SQLite
|
12
19
|
|
13
|
-
|
14
|
-
|
15
|
-
[Demo Rails application](https://cryptic-lake-90495.herokuapp.com/) |
|
16
|
-
[Source code of Demo Rails application](https://github.com/mechanicles/set_as_primary_rails_app)
|
17
|
-
|
18
|
-
[](https://travis-ci.org/mechanicles/set_as_primary)
|
19
|
-
|
20
20
|
## Installation
|
21
21
|
|
22
22
|
Add this line to your application's Gemfile:
|
@@ -74,7 +74,7 @@ end
|
|
74
74
|
|
75
75
|
You need to include `SetAsPrimary` module in your model where you want to handle the primary flag.
|
76
76
|
Then to `set_as_primary` class helper method, pass your primary flag attribute. You might need to pass
|
77
|
-
association key `owner_key` if you
|
77
|
+
association key `owner_key` if you want to consider owner (association) context.
|
78
78
|
|
79
79
|
**Note:** Default primary flag attribute is `primary`, and you can use another one too like `default` but
|
80
80
|
make sure that flag should be present in the table and should be a boolean data type column.
|
data/Rakefile
CHANGED
@@ -3,10 +3,23 @@
|
|
3
3
|
require "bundler/gem_tasks"
|
4
4
|
require "rake/testtask"
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
ADAPTERS = %w[postgresql mysql sqlite].freeze
|
7
|
+
|
8
|
+
ADAPTERS.each do |adapter|
|
9
|
+
namespace :test do
|
10
|
+
Rake::TestTask.new(adapter) do |t|
|
11
|
+
t.description = "Run #{adapter} tests"
|
12
|
+
t.libs << "test"
|
13
|
+
t.test_files = FileList["test/#{adapter}_test.rb"]
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
desc "Run all tests"
|
19
|
+
task :test do
|
20
|
+
ADAPTERS.each do |adapter|
|
21
|
+
Rake::Task["test:#{adapter}"].invoke
|
22
|
+
end
|
10
23
|
end
|
11
24
|
|
12
25
|
task default: :test
|
data/lib/set_as_primary.rb
CHANGED
@@ -16,23 +16,23 @@ module SetAsPrimary
|
|
16
16
|
instance_eval do
|
17
17
|
class_attribute :_primary_flag_attribute, :_owner_key, :_force_primary
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
19
|
+
private
|
20
|
+
def set_as_primary(primary_flag_attribute = :primary, options = {})
|
21
|
+
if primary_flag_attribute.is_a?(Hash)
|
22
|
+
options = primary_flag_attribute; primary_flag_attribute = :primary
|
23
|
+
end
|
23
24
|
|
24
|
-
|
25
|
+
configuration = { owner_key: nil, force_primary: true }
|
25
26
|
|
26
|
-
|
27
|
+
configuration.update(options) if options.is_a?(Hash)
|
27
28
|
|
28
|
-
|
29
|
+
_handle_setup_errors(primary_flag_attribute, configuration)
|
29
30
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
31
|
+
self._primary_flag_attribute = primary_flag_attribute
|
32
|
+
self._owner_key = configuration[:owner_key]
|
33
|
+
self._force_primary = configuration[:force_primary]
|
34
|
+
end
|
34
35
|
|
35
|
-
private
|
36
36
|
def _handle_setup_errors(primary_flag_attribute, configuration)
|
37
37
|
if !primary_flag_attribute.is_a?(Symbol)
|
38
38
|
raise SetAsPrimary::Error, "wrong argument type (expected Symbol)"
|
data/set_as_primary.gemspec
CHANGED
@@ -36,13 +36,14 @@ Gem::Specification.new do |spec|
|
|
36
36
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
37
37
|
spec.require_paths = ["lib"]
|
38
38
|
|
39
|
-
spec.required_ruby_version = ">=
|
39
|
+
spec.required_ruby_version = ">= 3"
|
40
40
|
|
41
|
-
spec.add_dependency "activesupport", ">=
|
41
|
+
spec.add_dependency "activesupport", ">= 6.1"
|
42
42
|
|
43
43
|
spec.add_development_dependency "bundler"
|
44
44
|
spec.add_development_dependency "rake"
|
45
45
|
spec.add_development_dependency "minitest"
|
46
|
+
spec.add_development_dependency "simplecov"
|
46
47
|
spec.add_development_dependency "railties"
|
47
48
|
spec.add_development_dependency "activerecord"
|
48
49
|
spec.add_development_dependency "rb-readline"
|
@@ -51,4 +52,7 @@ Gem::Specification.new do |spec|
|
|
51
52
|
spec.add_development_dependency "pg"
|
52
53
|
spec.add_development_dependency "mysql2"
|
53
54
|
spec.add_development_dependency "sqlite3"
|
55
|
+
spec.add_development_dependency "rubocop"
|
56
|
+
spec.add_development_dependency "rubocop-performance"
|
57
|
+
spec.add_development_dependency "rubocop-rails"
|
54
58
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: set_as_primary
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Santosh Wadghule
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-08-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '6.1'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '6.1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: simplecov
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: railties
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -164,16 +178,59 @@ dependencies:
|
|
164
178
|
- - ">="
|
165
179
|
- !ruby/object:Gem::Version
|
166
180
|
version: '0'
|
167
|
-
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: rubocop
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - ">="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '0'
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - ">="
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0'
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: rubocop-performance
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - ">="
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: '0'
|
202
|
+
type: :development
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - ">="
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '0'
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: rubocop-rails
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - ">="
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: '0'
|
216
|
+
type: :development
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - ">="
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: '0'
|
223
|
+
description:
|
168
224
|
email:
|
169
225
|
- santosh.wadghule@gmail.com
|
170
226
|
executables: []
|
171
227
|
extensions: []
|
172
228
|
extra_rdoc_files: []
|
173
229
|
files:
|
230
|
+
- ".codeclimate.yml"
|
231
|
+
- ".github/workflows/build.yml"
|
174
232
|
- ".gitignore"
|
175
233
|
- ".rubocop.yml"
|
176
|
-
- ".travis.yml"
|
177
234
|
- CHANGELOG.md
|
178
235
|
- Gemfile
|
179
236
|
- LICENSE.txt
|
@@ -191,7 +248,7 @@ licenses:
|
|
191
248
|
- MIT
|
192
249
|
metadata:
|
193
250
|
homepage_uri: https://github.com/mechanicles/set_as_primary
|
194
|
-
post_install_message:
|
251
|
+
post_install_message:
|
195
252
|
rdoc_options: []
|
196
253
|
require_paths:
|
197
254
|
- lib
|
@@ -199,16 +256,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
199
256
|
requirements:
|
200
257
|
- - ">="
|
201
258
|
- !ruby/object:Gem::Version
|
202
|
-
version: '
|
259
|
+
version: '3'
|
203
260
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
204
261
|
requirements:
|
205
262
|
- - ">="
|
206
263
|
- !ruby/object:Gem::Version
|
207
264
|
version: '0'
|
208
265
|
requirements: []
|
209
|
-
|
210
|
-
|
211
|
-
signing_key:
|
266
|
+
rubygems_version: 3.3.7
|
267
|
+
signing_key:
|
212
268
|
specification_version: 4
|
213
269
|
summary: The simplest way to handle the primary or default flag to your models.
|
214
270
|
test_files: []
|
data/.travis.yml
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
---
|
2
|
-
sudo: false
|
3
|
-
language: ruby
|
4
|
-
rvm:
|
5
|
-
- 2.5.3
|
6
|
-
gemfile:
|
7
|
-
- Gemfile
|
8
|
-
- test/gemfiles/activerecord52.gemfile
|
9
|
-
- test/gemfiles/activerecord42.gemfile
|
10
|
-
script: bundle exec rake test
|
11
|
-
services:
|
12
|
-
- postgresql
|
13
|
-
- mysql
|
14
|
-
addons:
|
15
|
-
postgresql: 10
|
16
|
-
before_install:
|
17
|
-
- mysqladmin create set_as_primary_test
|
18
|
-
- mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
|
19
|
-
- createdb set_as_primary_test
|
20
|
-
notifications:
|
21
|
-
email:
|
22
|
-
on_success: never
|
23
|
-
on_failure: change
|