symbolized_enum 0.2.0 → 0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5c089b2dcba0df33f1e1d8539e9b0a6a425d2b3f0937f954ad17962603d9ecd2
4
- data.tar.gz: b850d77014ef19831201f527930f8eab90f483866e6c96cb17127b129f4a26bb
3
+ metadata.gz: 1d058fd1165c523e96476fc69d24fe5928298bee3982b12bfaecc2cb1b7b0b51
4
+ data.tar.gz: b87b7645b5f40db92b58ce98173f2b2a39a16567a4a373be578a3f7660e5b441
5
5
  SHA512:
6
- metadata.gz: 580ec2c80e547ec07aca508678ddf64959c75585444b16088302fbd9fa8df770a8bb825dfa8627e6ba48808f991a549c03f70f12060f0ad58802a8e349b31f8f
7
- data.tar.gz: 332d5a7d78de72429032b91084b1a08d0ff640059069292f5f27d3984beb845fb1c2e4fa83e22c56d566a8f0ff8b684465e73c95357d6c6456e1cc57b882c2e9
6
+ metadata.gz: b4251dd351af516918797a5b95baec8d8cf9060fc44cbb8b0d5a8e6144976cd6a86a19776c35882f76a3233cffc9e2c0a97fea8235c54786a3c4ad3cbf145fcd
7
+ data.tar.gz: 3f8a39a8dc158b7fc6461c955263b7b0df2ebcde901b5f64101ea6e06fbdb942bc4fa4e9b51bacdcbe06028f2c7830f19e7239aa569cb1384d2e8d75a18d4e76
data/.rubocop.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  AllCops:
2
- TargetRubyVersion: 2.3
2
+ TargetRubyVersion: 2.7
3
3
 
4
4
  Style/WordArray:
5
5
  EnforcedStyle: brackets
@@ -35,3 +35,9 @@ Metrics/AbcSize:
35
35
 
36
36
  Metrics/MethodLength:
37
37
  Enabled: false
38
+
39
+ Metrics/PerceivedComplexity:
40
+ Enabled: false
41
+
42
+ Metrics/CyclomaticComplexity:
43
+ Enabled: false
data/.travis.yml CHANGED
@@ -1,21 +1,13 @@
1
1
  language: ruby
2
2
  sudo: false
3
3
  gemfile:
4
- - gemfiles/rails_5.0.gemfile
5
- - gemfiles/rails_5.1.gemfile
6
- - gemfiles/rails_5.2.gemfile
7
4
  - gemfiles/rails_6.0.gemfile
5
+ - gemfiles/rails_6.1.gemfile
6
+ - gemfiles/rails_7.0.gemfile
8
7
  rvm:
9
- - 2.3.8
10
- - 2.4.5
11
- - 2.5.3
12
- - 2.6.0
8
+ - 2.7.5
9
+ - 3.0.3
10
+ - 3.1.0
13
11
  script:
14
12
  - bundle exec rspec
15
13
  - bundle exec rubocop
16
- matrix:
17
- exclude:
18
- - rvm: 2.3.8
19
- gemfile: gemfiles/rails_6.0.gemfile
20
- - rvm: 2.4.5
21
- gemfile: gemfiles/rails_6.0.gemfile
data/Appraisals CHANGED
@@ -1,21 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- appraise 'rails-5.0' do
4
- gem 'activerecord', '5.0.7'
5
- gem 'activesupport', '5.0.7'
6
- end
7
-
8
- appraise 'rails-5.1' do
9
- gem 'activerecord', '5.1.6'
10
- gem 'activesupport', '5.1.6'
3
+ appraise 'rails-6.0' do
4
+ gem 'activerecord', '6.0.3.3'
5
+ gem 'activesupport', '6.0.3.3'
11
6
  end
12
7
 
13
- appraise 'rails-5.2' do
14
- gem 'activerecord', '5.2.1'
15
- gem 'activesupport', '5.2.1'
8
+ appraise 'rails-6.1' do
9
+ gem 'activerecord', '6.1.0'
10
+ gem 'activemodel', '6.1.0'
16
11
  end
17
12
 
18
- appraise 'rails-6.0' do
19
- gem 'activerecord', '6.0.0.beta1'
20
- gem 'activesupport', '6.0.0.beta1'
13
+ appraise 'rails-7.0' do
14
+ gem 'activerecord', '7.0.2'
15
+ gem 'activesupport', '7.0.2'
21
16
  end
data/CHANGELOG.md CHANGED
@@ -1,9 +1,19 @@
1
1
  # Changelog
2
2
 
3
- ### Unreleased
3
+ ## 0.5.0
4
+ - Support rails 7.0 and ruby 3.1
5
+ - Drop support rails < 6.0
6
+ - Drop support ruby < 2.7
4
7
 
5
- ### 0.2.0
8
+ ## 0.4.0
9
+ - Support rails 6.1
10
+ - Drop support for ruby < 2.5
11
+
12
+ ## 0.3.0
13
+ - Add `default` option to `symbolized_enum` that is passed through to ActiveRecord `attribute`
14
+
15
+ ## 0.2.0
6
16
  - Support rails 6.0
7
17
 
8
- ### 0.1.0
18
+ ## 0.1.0
9
19
  - Initial Implementation
data/README.md CHANGED
@@ -37,6 +37,18 @@ class Post < ApplicationRecord
37
37
  symbolized_enum :post_type, in: [:informative, :rant]
38
38
  end
39
39
 
40
+ # Default value
41
+ class Post < ApplicationRecord
42
+ include SymbolizedEnum
43
+
44
+ # A database column 'post_type' can be used as a symbolized enumeration by:
45
+ symbolized_enum :post_type, default: :informative, in: [:informative, :rant]
46
+ end
47
+
48
+ post = Post.new
49
+ post.post_type
50
+ => :informative
51
+
40
52
  # Optional predicate methods
41
53
  class Post < ApplicationRecord
42
54
  include SymbolizedEnum
@@ -4,7 +4,7 @@
4
4
 
5
5
  source 'https://rubygems.org'
6
6
 
7
- gem 'activerecord', '6.0.0.beta1'
8
- gem 'activesupport', '6.0.0.beta1'
7
+ gem 'activerecord', '6.0.3.3'
8
+ gem 'activesupport', '6.0.3.3'
9
9
 
10
10
  gemspec path: '../'
@@ -4,7 +4,7 @@
4
4
 
5
5
  source 'https://rubygems.org'
6
6
 
7
- gem 'activerecord', '5.0.7'
8
- gem 'activesupport', '5.0.7'
7
+ gem 'activemodel', '6.1.0'
8
+ gem 'activerecord', '6.1.0'
9
9
 
10
10
  gemspec path: '../'
@@ -4,7 +4,7 @@
4
4
 
5
5
  source 'https://rubygems.org'
6
6
 
7
- gem 'activerecord', '5.1.6'
8
- gem 'activesupport', '5.1.6'
7
+ gem 'activerecord', '7.0.2'
8
+ gem 'activesupport', '7.0.2'
9
9
 
10
10
  gemspec path: '../'
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SymbolizedEnum
4
- VERSION = '0.2.0'
4
+ VERSION = '0.5.0'
5
5
  end
@@ -9,6 +9,8 @@ module SymbolizedEnum
9
9
  extend ActiveSupport::Concern
10
10
 
11
11
  module ClassMethods
12
+ NO_DEFAULT_PROVIDED = Object.new # :nodoc:
13
+
12
14
  # @param [String, Symbol] attr_name Activerecord attribute to treat as a symbol
13
15
  # @param kwargs [Boolean] :predicates (false) Generate boolean methods for each enum value.
14
16
  # This must be true for any of the other predicate options to take effect
@@ -18,13 +20,20 @@ module SymbolizedEnum
18
20
  # suffixed with the name of the attribute
19
21
  # @param kwargs [Proc, nil] :predicate_name_generator (nil) Generate boolean methods for each enum value by calling
20
22
  # the proc with attribute name and enum value
23
+ # @param kwargs [Object, nil] :default This value is passed to the activerecord attribute default option
21
24
  # @param [Hash] **validates_inclusion_of_options Any options accepted by activerecord's validates_inclusion_of
22
25
  def symbolized_enum(attr_name, predicates: false,
23
26
  prefixed_predicate: false,
24
27
  suffixed_predicate: false,
25
28
  predicate_name_generator: nil,
29
+ default: NO_DEFAULT_PROVIDED,
26
30
  **validates_inclusion_of_options)
27
- attribute(attr_name, :symbol)
31
+ if default == NO_DEFAULT_PROVIDED
32
+ attribute(attr_name, :symbol)
33
+ else
34
+ attribute(attr_name, :symbol, default: default)
35
+ end
36
+
28
37
  validates_inclusion_of(attr_name, validates_inclusion_of_options)
29
38
 
30
39
  return unless predicates
@@ -28,18 +28,18 @@ Gem::Specification.new do |spec|
28
28
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
29
29
  spec.require_paths = ['lib']
30
30
 
31
- spec.required_ruby_version = '>= 2.3'
31
+ spec.required_ruby_version = '>= 2.7'
32
32
 
33
- spec.add_dependency 'activerecord', '>= 5.0', '< 6.1'
34
- spec.add_dependency 'activerecord-type-symbol', '~> 0.3.0'
35
- spec.add_dependency 'activesupport', '>= 5.0', '< 6.1'
33
+ spec.add_dependency 'activerecord', '>= 5.0', '< 7.1'
34
+ spec.add_dependency 'activerecord-type-symbol', '~> 0.5.0'
35
+ spec.add_dependency 'activesupport', '>= 5.0', '< 7.1'
36
36
 
37
37
  spec.add_development_dependency 'appraisal'
38
38
  spec.add_development_dependency 'bundler', '>= 1.3.0'
39
39
  spec.add_development_dependency 'database_cleaner'
40
- spec.add_development_dependency 'rake', '~> 10.0'
40
+ spec.add_development_dependency 'rake', '>= 12.3.3'
41
41
  spec.add_development_dependency 'rspec', '~> 3.0'
42
42
  spec.add_development_dependency 'rubocop'
43
- spec.add_development_dependency 'sqlite3'
43
+ spec.add_development_dependency 'sqlite3', '~> 1.3'
44
44
  spec.add_development_dependency 'with_model'
45
45
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: symbolized_enum
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Will Leonard
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-01-22 00:00:00.000000000 Z
11
+ date: 2022-03-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '5.0'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '6.1'
22
+ version: '7.1'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,21 +29,21 @@ dependencies:
29
29
  version: '5.0'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '6.1'
32
+ version: '7.1'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: activerecord-type-symbol
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: 0.3.0
39
+ version: 0.5.0
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: 0.3.0
46
+ version: 0.5.0
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: activesupport
49
49
  requirement: !ruby/object:Gem::Requirement
@@ -53,7 +53,7 @@ dependencies:
53
53
  version: '5.0'
54
54
  - - "<"
55
55
  - !ruby/object:Gem::Version
56
- version: '6.1'
56
+ version: '7.1'
57
57
  type: :runtime
58
58
  prerelease: false
59
59
  version_requirements: !ruby/object:Gem::Requirement
@@ -63,7 +63,7 @@ dependencies:
63
63
  version: '5.0'
64
64
  - - "<"
65
65
  - !ruby/object:Gem::Version
66
- version: '6.1'
66
+ version: '7.1'
67
67
  - !ruby/object:Gem::Dependency
68
68
  name: appraisal
69
69
  requirement: !ruby/object:Gem::Requirement
@@ -110,16 +110,16 @@ dependencies:
110
110
  name: rake
111
111
  requirement: !ruby/object:Gem::Requirement
112
112
  requirements:
113
- - - "~>"
113
+ - - ">="
114
114
  - !ruby/object:Gem::Version
115
- version: '10.0'
115
+ version: 12.3.3
116
116
  type: :development
117
117
  prerelease: false
118
118
  version_requirements: !ruby/object:Gem::Requirement
119
119
  requirements:
120
- - - "~>"
120
+ - - ">="
121
121
  - !ruby/object:Gem::Version
122
- version: '10.0'
122
+ version: 12.3.3
123
123
  - !ruby/object:Gem::Dependency
124
124
  name: rspec
125
125
  requirement: !ruby/object:Gem::Requirement
@@ -152,16 +152,16 @@ dependencies:
152
152
  name: sqlite3
153
153
  requirement: !ruby/object:Gem::Requirement
154
154
  requirements:
155
- - - ">="
155
+ - - "~>"
156
156
  - !ruby/object:Gem::Version
157
- version: '0'
157
+ version: '1.3'
158
158
  type: :development
159
159
  prerelease: false
160
160
  version_requirements: !ruby/object:Gem::Requirement
161
161
  requirements:
162
- - - ">="
162
+ - - "~>"
163
163
  - !ruby/object:Gem::Version
164
- version: '0'
164
+ version: '1.3'
165
165
  - !ruby/object:Gem::Dependency
166
166
  name: with_model
167
167
  requirement: !ruby/object:Gem::Requirement
@@ -196,10 +196,9 @@ files:
196
196
  - Rakefile
197
197
  - bin/console
198
198
  - bin/setup
199
- - gemfiles/rails_5.0.gemfile
200
- - gemfiles/rails_5.1.gemfile
201
- - gemfiles/rails_5.2.gemfile
202
199
  - gemfiles/rails_6.0.gemfile
200
+ - gemfiles/rails_6.1.gemfile
201
+ - gemfiles/rails_7.0.gemfile
203
202
  - lib/symbolized_enum.rb
204
203
  - lib/symbolized_enum/version.rb
205
204
  - symbolized_enum.gemspec
@@ -219,15 +218,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
219
218
  requirements:
220
219
  - - ">="
221
220
  - !ruby/object:Gem::Version
222
- version: '2.3'
221
+ version: '2.7'
223
222
  required_rubygems_version: !ruby/object:Gem::Requirement
224
223
  requirements:
225
224
  - - ">="
226
225
  - !ruby/object:Gem::Version
227
226
  version: '0'
228
227
  requirements: []
229
- rubyforge_project:
230
- rubygems_version: 2.7.6
228
+ rubygems_version: 3.1.2
231
229
  signing_key:
232
230
  specification_version: 4
233
231
  summary: Symbolized enum for activerecord
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # This file was generated by Appraisal
4
-
5
- source 'https://rubygems.org'
6
-
7
- gem 'activerecord', '5.2.1'
8
- gem 'activesupport', '5.2.1'
9
-
10
- gemspec path: '../'