set_as_primary 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
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