sequel-enum_values 1.2.1 → 2.0.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: f81fca70a9503e19d460aa390dee3b66f84f098566d33c7e5cbcfb145333aff6
4
- data.tar.gz: 4c97bce203bd0f1b6cf8c7ce49fe00fec806661896d650592bc85ff647fde0aa
3
+ metadata.gz: bb81e73a484928b6b12a9bacbc996154c58b6328b2fb965d50a0ba3529e0551d
4
+ data.tar.gz: f8e2106e499b1c69db923b26f8fd40cc9f21a4867c22a0c0ec0bb080cc2fc686
5
5
  SHA512:
6
- metadata.gz: b8124b2eca292e683b2dc2f78fdaa0d1f12f73d40e92d9bb588a96a7492ce002b21575fdfe44325e1c5e3e5e980f3a5c6cc757cfd1c3184f618e2639d98ae785
7
- data.tar.gz: 957ba624bbb0124d30cdce2e263f2ec7ba637ec3a47be52315fd6c8b21ab57023ddfb6208d1fa44223efa18ad3ac03bd08598abf11f27d4615288dae795af4e2
6
+ metadata.gz: 35c09c8ac60056e69ae601a9386ea33ab55d125157700a4883fe812dd4a664b9d26261a025bf89557cea4d8004846946c902b3d04d1b659e4b5755aaf330afb4
7
+ data.tar.gz: ca4c3bc2addf1bc1f1c660bfb2957c18cad062f9863133cca83965365f4f75c27069f3efdaa9ba8b18a4ceeaac25da2234d31888012139dec97cfe880768bec2
data/CHANGELOG.md ADDED
@@ -0,0 +1,29 @@
1
+ # Changelog
2
+
3
+ ## Unreleased
4
+
5
+ ## 2.0.0 (2026-02-19)
6
+
7
+ * Rename internal instance variables.
8
+ Avoid the conflict with [`static_cache` Sequel's plugin](http://sequel.jeremyevans.net/rdoc-plugins/classes/Sequel/Plugins/StaticCache.html)
9
+ * Drop Ruby 2.3, 2.4, 2.5, 2.6, 2.7, 3.0 and 3.1 support.
10
+ * Add Ruby 3.2, 3.3, 3.4 and 4.0 support.
11
+ * Update `sequel` runtime dependency.
12
+ * Make tests coverage 100%.
13
+ * Improve version locks of dependencies.
14
+ * Update development dependencies.
15
+ * Resolve new RuboCop offenses.
16
+ * Improve CI config.
17
+
18
+ ## 1.2.0 (2018-02-01)
19
+
20
+ * Add `caching` option for plugin.
21
+ Cache enum values in plugin by default.
22
+ * Add `predicate_methods` option.
23
+ Supports `true`, `false`, `%i[]` or `Symbol`. Default is `false`.
24
+ * Switch from Minitest (-Bacon) to RSpec.
25
+ * Add documentation for public methods.
26
+
27
+ ## 1.0.0 (2017-10-16)
28
+
29
+ * Initial release.
data/LICENSE.txt ADDED
@@ -0,0 +1,19 @@
1
+ Copyright (c) 2017 Alexander Popov (AlexWayfer)
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"),
5
+ to deal in the Software without restriction, including without limitation
6
+ the rights to use, copy, modify, merge, publish, distribute, sublicense,
7
+ and/or sell copies of the Software, and to permit persons to whom
8
+ the Software is furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included
11
+ in all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
14
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
15
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
16
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
17
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
18
+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
19
+ DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,126 @@
1
+ # Sequel enum_values plugin
2
+
3
+ [![Cirrus CI - Base Branch Build Status](https://img.shields.io/cirrus/github/AlexWayfer/sequel-enum_values?style=flat-square)](https://cirrus-ci.com/github/AlexWayfer/sequel-enum_values)
4
+ [![Codecov branch](https://img.shields.io/codecov/c/github/AlexWayfer/sequel-enum_values/main.svg?style=flat-square)](https://codecov.io/gh/AlexWayfer/sequel-enum_values)
5
+ [![Depfu](https://img.shields.io/depfu/AlexWayfer/sequel-enum_values?style=flat-square)](https://depfu.com/repos/github/AlexWayfer/sequel-enum_values)
6
+ [![Inline docs](https://inch-ci.org/github/AlexWayfer/sequel-enum_values.svg?branch=main)](https://inch-ci.org/github/AlexWayfer/sequel-enum_values)
7
+ [![Gem](https://img.shields.io/gem/v/sequel-enum_values.svg?style=flat-square)](https://rubygems.org/gems/sequel-enum_values)
8
+ [![License](https://img.shields.io/github/license/AlexWayfer/sequel-enum_values.svg?style=flat-square)](LICENSE.txt)
9
+
10
+ A Sequel plugin that provides `enum_values(field)` method to your models.
11
+
12
+ ## Installation
13
+
14
+ ### Bundler
15
+
16
+ Add this line to your project's Gemfile:
17
+
18
+ ```ruby
19
+ gem 'sequel-enum_values', require: 'sequel/plugins/enum_values'
20
+ ```
21
+
22
+ And then execute:
23
+
24
+ ```
25
+ $ bundle
26
+ ```
27
+
28
+ ### Manually
29
+
30
+ Install this gem as:
31
+
32
+ ```
33
+ $ gem install sequel-enum_values
34
+ ```
35
+
36
+ And then require it in your project:
37
+
38
+ ```ruby
39
+ require 'sequel/plugins/enum_values'
40
+ ```
41
+
42
+ ## Usage
43
+
44
+ If you have database schema like this:
45
+
46
+ ```ruby
47
+ create_enum :item_type, %w[first second third]
48
+ create_enum :item_status, %w[created selected canceled]
49
+
50
+ create_table :items do
51
+ primary_key :id
52
+ column :type, :item_type
53
+ column :status, :item_status
54
+ end
55
+ ```
56
+
57
+ Then you can use it like this:
58
+
59
+ ```ruby
60
+ class Item < Sequel::Model
61
+ plugin :enum_values
62
+ end
63
+
64
+ Item.enum_values(:type) # => ["first", "second", "third"]
65
+ Item.enum_values(:status) # => ["created", "selected", "canceled"]
66
+ ```
67
+
68
+ ### Caching
69
+
70
+ Plugin caches enum values for each field by default.
71
+
72
+ But you can disable it:
73
+
74
+ ```ruby
75
+ Item.plugin :enum_values, caching: false
76
+ ```
77
+
78
+ ### Predicate methods
79
+
80
+ Plugin can define instance methods for all enum values:
81
+
82
+ ```ruby
83
+ Item.plugin :enum_values, predicate_methods: true # default is `false`
84
+
85
+ item = Item.new(type: 'first', status: 'created')
86
+
87
+ item.first? # => true
88
+ item.second? # => false
89
+
90
+ item.created? # => true
91
+ item.selected? # => false
92
+ ```
93
+
94
+ Or just for specific fields:
95
+
96
+ ```ruby
97
+ Item.plugin :enum_values, predicate_methods: %i[status]
98
+ # or just `:status` for single value
99
+
100
+ item = Item.new(type: 'first', status: 'created')
101
+
102
+ item.first? # => NoMethodError
103
+
104
+ item.created? # => true
105
+ item.selected? # => false
106
+ ```
107
+
108
+ ## Development
109
+
110
+ After checking out the repo, run `bundle install` to install dependencies.
111
+
112
+ Then, run `toys rspec` to run the tests.
113
+
114
+ To install this gem onto your local machine, run `toys gem install`.
115
+
116
+ To release a new version, run `toys gem release %version%`.
117
+ See how it works [here](https://github.com/AlexWayfer/gem_toys#release).
118
+
119
+ ## Contributing
120
+
121
+ Bug reports and pull requests are welcome on [GitHub](https://github.com/AlexWayfer/sequel-enum_values).
122
+
123
+ ## License
124
+
125
+ The gem is available as open source under the terms of the
126
+ [MIT License](https://opensource.org/licenses/MIT).
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sequel
4
+ module Plugins
5
+ module EnumValues
6
+ VERSION = '2.0.0'
7
+ end
8
+ end
9
+ end
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative 'enum_values/version'
4
+
3
5
  module Sequel
4
6
  module Plugins
5
7
  ## Plugin for getting enum values from PostgreSQL by field name
6
8
  module EnumValues
7
- VERSION = '1.2.1'
8
-
9
9
  ## Initialize model state for this plugin
10
10
  ## @param model [Sequel::Model] model for which plugin applying
11
11
  ## @param _options [Hash] options (don't affect anything in this moment)
@@ -80,15 +80,14 @@ module Sequel
80
80
  end
81
81
 
82
82
  def define_predicate_method(field, enum_value)
83
- define_method "#{enum_value}?" do
83
+ define_method :"#{enum_value}?" do
84
84
  public_send(field) == enum_value
85
85
  end
86
86
  end
87
87
 
88
88
  def all_enum_fields
89
- if @enum_values_caching && defined?(@all_enum_fields)
90
- return @all_enum_fields
91
- end
89
+ return @all_enum_fields if @enum_values_caching && defined?(@all_enum_fields)
90
+
92
91
  @all_enum_fields =
93
92
  db.schema(table_name).to_h
94
93
  .select { |_field, schema| schema.key?(:enum_values) }
metadata CHANGED
@@ -1,161 +1,54 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequel-enum_values
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Popov
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2018-02-01 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: sequel
15
14
  requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 4.1.0
20
- - - "<="
21
- - !ruby/object:Gem::Version
22
- version: '6'
23
- type: :runtime
24
- prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- version: 4.1.0
30
- - - "<="
31
- - !ruby/object:Gem::Version
32
- version: '6'
33
- - !ruby/object:Gem::Dependency
34
- name: codecov
35
- requirement: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - "~>"
38
- - !ruby/object:Gem::Version
39
- version: '0'
40
- type: :development
41
- prerelease: false
42
- version_requirements: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - "~>"
45
- - !ruby/object:Gem::Version
46
- version: '0'
47
- - !ruby/object:Gem::Dependency
48
- name: pry
49
- requirement: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - "~>"
52
- - !ruby/object:Gem::Version
53
- version: '0'
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - "~>"
59
- - !ruby/object:Gem::Version
60
- version: '0'
61
- - !ruby/object:Gem::Dependency
62
- name: pry-byebug
63
- requirement: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - "~>"
66
- - !ruby/object:Gem::Version
67
- version: '3.5'
68
- type: :development
69
- prerelease: false
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - "~>"
73
- - !ruby/object:Gem::Version
74
- version: '3.5'
75
- - !ruby/object:Gem::Dependency
76
- name: rack-test
77
- requirement: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - "~>"
80
- - !ruby/object:Gem::Version
81
- version: '0'
82
- type: :development
83
- prerelease: false
84
- version_requirements: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - "~>"
87
- - !ruby/object:Gem::Version
88
- version: '0'
89
- - !ruby/object:Gem::Dependency
90
- name: rake
91
- requirement: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - "~>"
94
- - !ruby/object:Gem::Version
95
- version: '12'
96
- type: :development
97
- prerelease: false
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - "~>"
101
- - !ruby/object:Gem::Version
102
- version: '12'
103
- - !ruby/object:Gem::Dependency
104
- name: rspec
105
- requirement: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - "~>"
108
- - !ruby/object:Gem::Version
109
- version: '3.7'
110
- type: :development
111
- prerelease: false
112
- version_requirements: !ruby/object:Gem::Requirement
113
15
  requirements:
114
16
  - - "~>"
115
17
  - !ruby/object:Gem::Version
116
- version: '3.7'
117
- - !ruby/object:Gem::Dependency
118
- name: rubocop
119
- requirement: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - "~>"
122
- - !ruby/object:Gem::Version
123
- version: '0.52'
124
- type: :development
125
- prerelease: false
126
- version_requirements: !ruby/object:Gem::Requirement
127
- requirements:
128
- - - "~>"
129
- - !ruby/object:Gem::Version
130
- version: '0.52'
131
- - !ruby/object:Gem::Dependency
132
- name: simplecov
133
- requirement: !ruby/object:Gem::Requirement
134
- requirements:
135
- - - "~>"
136
- - !ruby/object:Gem::Version
137
- version: '0'
138
- type: :development
18
+ version: '5.0'
19
+ type: :runtime
139
20
  prerelease: false
140
21
  version_requirements: !ruby/object:Gem::Requirement
141
22
  requirements:
142
23
  - - "~>"
143
24
  - !ruby/object:Gem::Version
144
- version: '0'
145
- description: Now your `Sequel::Model` classes has method for getting `pg_enum` values
25
+ version: '5.0'
26
+ description: 'Now your `Sequel::Model` classes has method for getting `pg_enum` values
146
27
  from DataBase by field name.
28
+
29
+ '
147
30
  email:
148
31
  - alex.wayfer@gmail.com
149
32
  executables: []
150
33
  extensions: []
151
34
  extra_rdoc_files: []
152
35
  files:
36
+ - CHANGELOG.md
37
+ - LICENSE.txt
38
+ - README.md
153
39
  - lib/sequel/plugins/enum_values.rb
40
+ - lib/sequel/plugins/enum_values/version.rb
154
41
  homepage: https://github.com/AlexWayfer/sequel-enum_values
155
42
  licenses:
156
43
  - MIT
157
- metadata: {}
158
- post_install_message:
44
+ metadata:
45
+ bug_tracker_uri: https://github.com/AlexWayfer/sequel-enum_values/issues
46
+ changelog_uri: https://github.com/AlexWayfer/sequel-enum_values/blob/v2.0.0/CHANGELOG.md
47
+ documentation_uri: http://www.rubydoc.info/gems/sequel-enum_values/2.0.0
48
+ homepage_uri: https://github.com/AlexWayfer/sequel-enum_values
49
+ rubygems_mfa_required: 'true'
50
+ source_code_uri: https://github.com/AlexWayfer/sequel-enum_values
51
+ wiki_uri: https://github.com/AlexWayfer/sequel-enum_values/wiki
159
52
  rdoc_options: []
160
53
  require_paths:
161
54
  - lib
@@ -163,16 +56,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
163
56
  requirements:
164
57
  - - ">="
165
58
  - !ruby/object:Gem::Version
166
- version: '0'
59
+ version: '3.2'
60
+ - - "<"
61
+ - !ruby/object:Gem::Version
62
+ version: '5'
167
63
  required_rubygems_version: !ruby/object:Gem::Requirement
168
64
  requirements:
169
65
  - - ">="
170
66
  - !ruby/object:Gem::Version
171
67
  version: '0'
172
68
  requirements: []
173
- rubyforge_project:
174
- rubygems_version: 2.7.3
175
- signing_key:
69
+ rubygems_version: 4.0.3
176
70
  specification_version: 4
177
71
  summary: Sequel plugin that provides method for getting `pg_enum` values
178
72
  test_files: []