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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7b410c90868639a2814d0d217615e4aab6629ecfd95b8d4c2807682f441196b1
4
- data.tar.gz: c23232116cbd213ab9e89efe63a2b4952fc27e2948bac8173309913414d9443b
3
+ metadata.gz: a40b7a86d9667aee2c14855f55f94324e19ef0c6d954eabcb6577af9b3cf3d95
4
+ data.tar.gz: c039891d9c5624b9e510d4444c3b47a189b6c0631e69906ce0eb7463678ab5c1
5
5
  SHA512:
6
- metadata.gz: 0d63e1a3a0a41c023e23ab5153a1cfd6f58ad3457fe3e6ca48c51245c958ec96d2b62fd04e1af27355cd0e42e37685245c2c09f40fae65e35c8e239f8ac2d412
7
- data.tar.gz: ad973cfdab0ac3dded4f7bf1b33fa5e5df8942a494a4c7d0b22f36edff253d20c764e2c762d28c355e8bb972091655d69dfd4b1de99cbc76372e42e8674d9e14
6
+ metadata.gz: 7f3481d0945c57108cf6dd3f7080c15dfd78f03db2c3d47251ff3b02223551cc921021ad27fb2b5486402e2d3e07615d223377925b45fe5ca59b2b991621f7e2
7
+ data.tar.gz: 2de3b4e8a4b56c54efffa65426581449c01cdf892e0925b71e09ebc69aaa8e95c1f8edf273b14bfed87b0a4bdf27d0286dc53632d116d1940d18c6bfa99a4e6e
data/.codeclimate.yml ADDED
@@ -0,0 +1,4 @@
1
+ plugins:
2
+ rubocop:
3
+ enabled: true
4
+ channel: rubocop-0-76
@@ -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
@@ -10,3 +10,4 @@
10
10
  /tmp/
11
11
  .ruby-version
12
12
  .ruby-gemset
13
+ coverage
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
@@ -1,3 +1,7 @@
1
+ ## 0.1.4 (2023-08-09)
2
+ - Dropped support for Ruby < 3 and Rails < 6.1
3
+ - Add support for Rails 7
4
+
1
5
  ## 0.1.3 (2019-02-02)
2
6
  - Fixed index_on issue.
3
7
 
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", "~> 6.0.0"
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
+ [![Build Status](https://github.com/mechanicles/set_as_primary/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/mechanicles/set_as_primary/actions)
4
+ [![Maintainability](https://api.codeclimate.com/v1/badges/9aa764138b14b87c8fe1/maintainability)](https://codeclimate.com/github/mechanicles/set_as_primary/maintainability)
5
+ [![Test Coverage](https://api.codeclimate.com/v1/badges/9aa764138b14b87c8fe1/test_coverage)](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
- [![Build Status](https://travis-ci.org/mechanicles/set_as_primary.svg?branch=master)](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 wan to consider owner (association) context.
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
- Rake::TestTask.new(:test) do |t|
7
- t.libs << "test"
8
- t.libs << "lib"
9
- t.test_files = FileList["test/**/*_test.rb"]
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SetAsPrimary
4
- VERSION = "0.1.3"
4
+ VERSION = "0.1.4"
5
5
  end
@@ -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
- def set_as_primary(primary_flag_attribute = :primary, options = {})
20
- if primary_flag_attribute.is_a?(Hash)
21
- options = primary_flag_attribute; primary_flag_attribute = :primary
22
- end
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
- configuration = { owner_key: nil, force_primary: true }
25
+ configuration = { owner_key: nil, force_primary: true }
25
26
 
26
- configuration.update(options) if options.is_a?(Hash)
27
+ configuration.update(options) if options.is_a?(Hash)
27
28
 
28
- _handle_setup_errors(primary_flag_attribute, configuration)
29
+ _handle_setup_errors(primary_flag_attribute, configuration)
29
30
 
30
- self._primary_flag_attribute = primary_flag_attribute
31
- self._owner_key = configuration[:owner_key]
32
- self._force_primary = configuration[:force_primary]
33
- end
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)"
@@ -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 = ">= 2.2"
39
+ spec.required_ruby_version = ">= 3"
40
40
 
41
- spec.add_dependency "activesupport", ">= 4.2"
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.3
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: 2020-01-02 00:00:00.000000000 Z
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: '4.2'
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: '4.2'
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
- description:
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: '2.2'
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
- rubyforge_project:
210
- rubygems_version: 2.7.6
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