auto_increment 1.6.2 → 1.7.1
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/.github/workflows/ci.yml +47 -0
- data/.gitignore +2 -1
- data/.rspec +0 -1
- data/.rubocop.yml +10 -44
- data/.ruby-version +1 -1
- data/Appraisals +9 -6
- data/CHANGELOG.md +128 -0
- data/Gemfile +13 -1
- data/Gemfile.lock +110 -80
- data/Guardfile +3 -3
- data/README.md +248 -28
- data/Rakefile +2 -2
- data/auto_increment.gemspec +17 -29
- data/gemfiles/rails_7_1.gemfile +14 -2
- data/gemfiles/rails_7_1.gemfile.lock +108 -78
- data/gemfiles/rails_7_2.gemfile +20 -0
- data/gemfiles/rails_7_2.gemfile.lock +182 -0
- data/gemfiles/rails_8_0.gemfile +20 -0
- data/gemfiles/rails_8_0.gemfile.lock +185 -0
- data/gemfiles/rails_8_1.gemfile +20 -0
- data/gemfiles/rails_8_1.gemfile.lock +184 -0
- data/lib/auto_increment/active_record.rb +31 -4
- data/lib/auto_increment/incrementor.rb +37 -29
- data/lib/auto_increment/version.rb +1 -1
- data/lib/auto_increment.rb +8 -8
- data/spec/lib/active_record_spec.rb +85 -23
- data/spec/lib/incrementor_spec.rb +139 -21
- data/spec/models/account.rb +2 -0
- data/spec/models/post.rb +6 -0
- data/spec/models/user.rb +4 -4
- data/spec/spec_helper.rb +14 -8
- data/spec/support/active_record.rb +5 -0
- metadata +24 -186
- data/.circleci/config.yml +0 -62
- data/.coveralls.yml +0 -1
- data/gemfiles/rails_6_0.gemfile +0 -8
- data/gemfiles/rails_6_0.gemfile.lock +0 -144
- data/gemfiles/rails_6_1.gemfile +0 -8
- data/gemfiles/rails_6_1.gemfile.lock +0 -143
- data/gemfiles/rails_7_0.gemfile +0 -8
- data/gemfiles/rails_7_0.gemfile.lock +0 -141
- data/spec/db/sync.db +0 -0
data/README.md
CHANGED
|
@@ -1,66 +1,286 @@
|
|
|
1
1
|
# auto_increment
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
[](https://codeclimate.com/github/felipediesel/auto_increment)
|
|
3
|
+

|
|
5
4
|
|
|
6
|
-
auto_increment
|
|
5
|
+
[](https://qlty.sh/gh/felipediesel/projects/auto_increment)
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
`auto_increment` automatically generates sequential values for Active Record attributes.
|
|
8
|
+
|
|
9
|
+
Common use cases:
|
|
10
|
+
|
|
11
|
+
- Invoice numbers (`1`, `2`, `3`)
|
|
12
|
+
- Customer numbers (`1000`, `1001`, `1002`)
|
|
13
|
+
- Per-account sequences
|
|
14
|
+
- Letter sequences (`A`, `B`, ..., `Z`, `AA`, `AB`)
|
|
15
|
+
|
|
16
|
+
## Quick Start
|
|
17
|
+
|
|
18
|
+
Without the gem:
|
|
19
|
+
|
|
20
|
+
```rb
|
|
21
|
+
class Invoice < ApplicationRecord
|
|
22
|
+
before_create :set_number
|
|
23
|
+
|
|
24
|
+
private
|
|
25
|
+
|
|
26
|
+
def set_number
|
|
27
|
+
self.number = Invoice.maximum(:number).to_i + 1
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
With `auto_increment`:
|
|
33
|
+
|
|
34
|
+
```rb
|
|
35
|
+
class Invoice < ApplicationRecord
|
|
36
|
+
auto_increment :number
|
|
37
|
+
end
|
|
38
|
+
```
|
|
9
39
|
|
|
10
|
-
|
|
40
|
+
```rb
|
|
41
|
+
Invoice.create!.number #=> 1
|
|
42
|
+
Invoice.create!.number #=> 2
|
|
43
|
+
Invoice.create!.number #=> 3
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Installation
|
|
11
47
|
|
|
12
|
-
|
|
48
|
+
Add the gem to your Gemfile:
|
|
13
49
|
|
|
14
50
|
```rb
|
|
15
51
|
gem "auto_increment"
|
|
16
52
|
```
|
|
17
53
|
|
|
54
|
+
Then run:
|
|
55
|
+
|
|
56
|
+
```sh
|
|
57
|
+
bundle install
|
|
58
|
+
```
|
|
59
|
+
|
|
18
60
|
## Usage
|
|
19
61
|
|
|
20
|
-
|
|
62
|
+
The target column must exist in your database.
|
|
21
63
|
|
|
22
64
|
```rb
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
max_code = Operation.maximum(:code)
|
|
26
|
-
self.code = max_code.to_i + 1
|
|
65
|
+
class Invoice < ApplicationRecord
|
|
66
|
+
auto_increment :number
|
|
27
67
|
end
|
|
28
68
|
```
|
|
29
69
|
|
|
30
|
-
|
|
70
|
+
### Integer Sequences
|
|
31
71
|
|
|
32
|
-
|
|
72
|
+
```rb
|
|
73
|
+
class Invoice < ApplicationRecord
|
|
74
|
+
auto_increment :number
|
|
75
|
+
end
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Generated values:
|
|
79
|
+
|
|
80
|
+
```text
|
|
81
|
+
1
|
|
82
|
+
2
|
|
83
|
+
3
|
|
84
|
+
4
|
|
85
|
+
...
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Custom Starting Value
|
|
89
|
+
|
|
90
|
+
```rb
|
|
91
|
+
class Invoice < ApplicationRecord
|
|
92
|
+
auto_increment :number, initial: 1000
|
|
93
|
+
end
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Generated values:
|
|
97
|
+
|
|
98
|
+
```text
|
|
99
|
+
1000
|
|
100
|
+
1001
|
|
101
|
+
1002
|
|
102
|
+
...
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### String Sequences
|
|
106
|
+
|
|
107
|
+
```rb
|
|
108
|
+
class User < ApplicationRecord
|
|
109
|
+
auto_increment :code, initial: "A"
|
|
110
|
+
end
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Generated values:
|
|
114
|
+
|
|
115
|
+
```text
|
|
116
|
+
A
|
|
117
|
+
B
|
|
118
|
+
C
|
|
119
|
+
...
|
|
120
|
+
Z
|
|
121
|
+
AA
|
|
122
|
+
AB
|
|
123
|
+
...
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
String sequences follow Ruby's [`String#next`](https://ruby-doc.org/3.4/String.html#method-i-next) logic. The column type is inferred from the database schema.
|
|
127
|
+
|
|
128
|
+
> **Deprecation**: Explicitly passing an initial value whose type differs from the database column type is deprecated. For example, `auto_increment :ref, initial: 1` on a `string` column will emit a warning. When `initial` is not set, the default is automatically inferred from the column type (`"1"` for string columns, `1` for integer columns).
|
|
129
|
+
|
|
130
|
+
### Scoped Sequences
|
|
131
|
+
|
|
132
|
+
Generate independent sequences within a scope:
|
|
133
|
+
|
|
134
|
+
```rb
|
|
135
|
+
class Invoice < ApplicationRecord
|
|
136
|
+
auto_increment :number, scope: :account_id
|
|
137
|
+
end
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Result:
|
|
141
|
+
|
|
142
|
+
```text
|
|
143
|
+
Account 1: 1, 2, 3
|
|
144
|
+
Account 2: 1, 2, 3
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Multiple scopes are also supported:
|
|
148
|
+
|
|
149
|
+
```rb
|
|
150
|
+
class Invoice < ApplicationRecord
|
|
151
|
+
auto_increment :number,
|
|
152
|
+
scope: [:account_id, :year]
|
|
153
|
+
end
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Result:
|
|
157
|
+
|
|
158
|
+
```text
|
|
159
|
+
Account 1, 2026: 1, 2, 3
|
|
160
|
+
Account 1, 2027: 1, 2, 3
|
|
161
|
+
Account 2, 2026: 1, 2, 3
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Using Model Scopes
|
|
165
|
+
|
|
166
|
+
`model_scope` applies one or more Active Record scopes before calculating the maximum value.
|
|
167
|
+
|
|
168
|
+
This is useful when:
|
|
169
|
+
|
|
170
|
+
- Bypassing a `default_scope`
|
|
171
|
+
- Including archived records
|
|
172
|
+
- Restricting the sequence to a subset of records
|
|
173
|
+
|
|
174
|
+
```rb
|
|
175
|
+
class User < ApplicationRecord
|
|
176
|
+
default_scope -> { where(active: true) }
|
|
177
|
+
|
|
178
|
+
scope :unscoped_all, -> { unscoped }
|
|
179
|
+
|
|
180
|
+
auto_increment :code,
|
|
181
|
+
scope: :account_id,
|
|
182
|
+
model_scope: :unscoped_all
|
|
183
|
+
end
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
In this example, the sequence is calculated using all records, including inactive ones.
|
|
187
|
+
|
|
188
|
+
### Callback Timing
|
|
189
|
+
|
|
190
|
+
By default, values are assigned during `before_create`.
|
|
33
191
|
|
|
34
192
|
```rb
|
|
35
193
|
auto_increment :code
|
|
36
194
|
```
|
|
37
195
|
|
|
38
|
-
|
|
196
|
+
You can change when the value is generated:
|
|
39
197
|
|
|
40
|
-
|
|
198
|
+
| Option | Callback |
|
|
199
|
+
| ------------- | ------------------- |
|
|
200
|
+
| `:create` | `before_create` |
|
|
201
|
+
| `:save` | `before_save` |
|
|
202
|
+
| `:validation` | `before_validation` |
|
|
41
203
|
|
|
42
|
-
|
|
204
|
+
Example:
|
|
43
205
|
|
|
44
206
|
```rb
|
|
45
|
-
|
|
207
|
+
class Account < ApplicationRecord
|
|
208
|
+
auto_increment :code, before: :validation
|
|
209
|
+
|
|
210
|
+
validates :code, presence: true
|
|
211
|
+
end
|
|
46
212
|
```
|
|
47
213
|
|
|
48
|
-
|
|
214
|
+
### Overwriting Existing Values
|
|
215
|
+
|
|
216
|
+
By default, manually assigned nonblank values are preserved. Blank values (as defined by Active Support, including `nil`, `false`, `0`, and `""`) are treated as unset and will be generated.
|
|
217
|
+
|
|
218
|
+
```rb
|
|
219
|
+
invoice.number = 500
|
|
220
|
+
invoice.save
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
To always generate a new value:
|
|
224
|
+
|
|
225
|
+
```rb
|
|
226
|
+
auto_increment :number, force: true
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
### Concurrency
|
|
230
|
+
|
|
231
|
+
To request a database row lock while calculating the next value, enable locking:
|
|
232
|
+
|
|
233
|
+
```rb
|
|
234
|
+
auto_increment :number, lock: true
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
The lock is applied to the query used to find the current maximum. Its behavior depends on the database adapter and query; this option does not guarantee unique values under concurrent inserts. Add a unique database index on the generated column (or on the generated column together with its scope columns) to enforce uniqueness.
|
|
238
|
+
|
|
239
|
+
## Options
|
|
240
|
+
|
|
241
|
+
```rb
|
|
242
|
+
auto_increment :number,
|
|
243
|
+
scope: [:account_id, :year],
|
|
244
|
+
model_scope: :unscoped_all,
|
|
245
|
+
initial: 1000,
|
|
246
|
+
force: true,
|
|
247
|
+
lock: true,
|
|
248
|
+
before: :validation
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
| Option | Description | Default |
|
|
252
|
+
| ------------- | ------------------------------------------------------------------ | --------- |
|
|
253
|
+
| `column` | Column to increment. Can be integer or string. | `:code` |
|
|
254
|
+
| `initial` | Starting value. Should match the database column type (`Integer` for integer columns, `String` for string columns); a mismatch is deprecated. When omitted, inferred from the column type. | `1` or `"1"` (inferred) |
|
|
255
|
+
| `scope` | Restricts the sequence to matching column values. | `nil` |
|
|
256
|
+
| `model_scope` | Applies Active Record scopes before calculating the maximum value. | `nil` |
|
|
257
|
+
| `force` | Overwrites an already assigned value. | `false` |
|
|
258
|
+
| `lock` | Enables locking when calculating the next value. | `false` |
|
|
259
|
+
| `before` | Callback timing (`:create`, `:save`, `:validation`). | `:create` |
|
|
260
|
+
|
|
261
|
+
## How It Works
|
|
262
|
+
|
|
263
|
+
When a record is created, `auto_increment`:
|
|
264
|
+
|
|
265
|
+
1. Builds a query for the target column.
|
|
266
|
+
2. Applies any configured scopes.
|
|
267
|
+
3. Applies any configured model scopes.
|
|
268
|
+
4. Finds the current maximum value.
|
|
269
|
+
5. Calculates the next value.
|
|
270
|
+
6. Assigns the value during the configured callback.
|
|
49
271
|
|
|
50
|
-
|
|
51
|
-
- model_scope: you can define model scopes that will be executed and you can use as many as you want (default: nil)
|
|
52
|
-
- initial: initial value of column (default: 1)
|
|
53
|
-
- force: you can set a value before create and auto_increment will not change that, but if you do want this, set force to true (default: false)
|
|
54
|
-
- lock: you can set a lock on the max query. (default: false)
|
|
55
|
-
- before: you can choose a different callback to be used (:create, :save, :validation) (default: create)
|
|
272
|
+
The generated value is stored in a normal database column and can be queried, indexed, and validated like any other attribute.
|
|
56
273
|
|
|
57
274
|
## Compatibility
|
|
58
275
|
|
|
59
|
-
|
|
60
|
-
|
|
276
|
+
| Ruby | Rails |
|
|
277
|
+
| ---- | ------------------ |
|
|
278
|
+
| 3.3 | 7.1, 7.2 |
|
|
279
|
+
| 3.4 | 7.1, 7.2, 8.0, 8.1 |
|
|
280
|
+
| 4.0 | 7.2, 8.0, 8.1 |
|
|
61
281
|
|
|
62
|
-
|
|
282
|
+
This release supports Rails 7.1 and newer. The older 1.6.2 release supports Rails 6.1 and 7.0; for earlier Rails versions, see the [changelog](CHANGELOG.md) for the releases that added support.
|
|
63
283
|
|
|
64
284
|
## License
|
|
65
285
|
|
|
66
|
-
|
|
286
|
+
Released under the MIT License. See [LICENSE.txt](LICENSE.txt).
|
data/Rakefile
CHANGED
data/auto_increment.gemspec
CHANGED
|
@@ -1,37 +1,25 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
$LOAD_PATH.push File.expand_path(
|
|
4
|
-
require
|
|
3
|
+
$LOAD_PATH.push File.expand_path("lib", __dir__)
|
|
4
|
+
require "auto_increment/version"
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
|
-
s.name
|
|
8
|
-
s.version
|
|
9
|
-
s.licenses
|
|
10
|
-
s.platform
|
|
11
|
-
s.authors
|
|
12
|
-
s.email
|
|
13
|
-
s.homepage
|
|
14
|
-
s.summary
|
|
15
|
-
s.description =
|
|
7
|
+
s.name = "auto_increment"
|
|
8
|
+
s.version = AutoIncrement::VERSION.dup
|
|
9
|
+
s.licenses = "MIT"
|
|
10
|
+
s.platform = Gem::Platform::RUBY
|
|
11
|
+
s.authors = ["Felipe Diesel"]
|
|
12
|
+
s.email = ["felipediesel@gmail.com"]
|
|
13
|
+
s.homepage = "https://github.com/felipediesel/auto_increment"
|
|
14
|
+
s.summary = "Auto increment a string or integer column"
|
|
15
|
+
s.description = "Automatically generates sequential values for string or integer Active Record columns."
|
|
16
|
+
s.metadata["source_code_uri"] = "https://github.com/felipediesel/auto_increment"
|
|
16
17
|
|
|
17
|
-
s.files
|
|
18
|
-
s.
|
|
19
|
-
s.require_paths = ['lib']
|
|
18
|
+
s.files = `git ls-files`.split("\n")
|
|
19
|
+
s.require_paths = ["lib"]
|
|
20
20
|
|
|
21
|
-
s.add_dependency
|
|
22
|
-
s.add_dependency
|
|
21
|
+
s.add_dependency "activerecord", ">= 7.1"
|
|
22
|
+
s.add_dependency "activesupport", ">= 7.1"
|
|
23
23
|
|
|
24
|
-
s.
|
|
25
|
-
s.add_development_dependency 'rake'
|
|
26
|
-
|
|
27
|
-
s.add_development_dependency 'appraisal'
|
|
28
|
-
s.add_development_dependency 'database_cleaner'
|
|
29
|
-
s.add_development_dependency 'fuubar'
|
|
30
|
-
s.add_development_dependency 'guard'
|
|
31
|
-
s.add_development_dependency 'guard-rspec'
|
|
32
|
-
s.add_development_dependency 'rspec'
|
|
33
|
-
s.add_development_dependency 'rspec-nc'
|
|
34
|
-
s.add_development_dependency 'rubocop'
|
|
35
|
-
|
|
36
|
-
s.add_development_dependency 'sqlite3', '>= 1.3.13'
|
|
24
|
+
s.metadata["rubygems_mfa_required"] = "true"
|
|
37
25
|
end
|
data/gemfiles/rails_7_1.gemfile
CHANGED
|
@@ -2,7 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
source "https://rubygems.org"
|
|
4
4
|
|
|
5
|
-
gem "activerecord", "7.1.
|
|
6
|
-
gem "activesupport", "7.1.
|
|
5
|
+
gem "activerecord", "7.1.6"
|
|
6
|
+
gem "activesupport", "7.1.6"
|
|
7
|
+
|
|
8
|
+
group :development do
|
|
9
|
+
gem "appraisal"
|
|
10
|
+
gem "database_cleaner"
|
|
11
|
+
gem "fuubar"
|
|
12
|
+
gem "guard"
|
|
13
|
+
gem "guard-rspec"
|
|
14
|
+
gem "rake"
|
|
15
|
+
gem "rspec"
|
|
16
|
+
gem "sqlite3", "~> 2.10.2"
|
|
17
|
+
gem "standard"
|
|
18
|
+
end
|
|
7
19
|
|
|
8
20
|
gemspec path: "../"
|
|
@@ -1,56 +1,62 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: ..
|
|
3
3
|
specs:
|
|
4
|
-
auto_increment (1.
|
|
5
|
-
activerecord (>=
|
|
6
|
-
activesupport (>=
|
|
4
|
+
auto_increment (1.7.1)
|
|
5
|
+
activerecord (>= 7.1)
|
|
6
|
+
activesupport (>= 7.1)
|
|
7
7
|
|
|
8
8
|
GEM
|
|
9
9
|
remote: https://rubygems.org/
|
|
10
10
|
specs:
|
|
11
|
-
activemodel (7.1.
|
|
12
|
-
activesupport (= 7.1.
|
|
13
|
-
activerecord (7.1.
|
|
14
|
-
activemodel (= 7.1.
|
|
15
|
-
activesupport (= 7.1.
|
|
11
|
+
activemodel (7.1.6)
|
|
12
|
+
activesupport (= 7.1.6)
|
|
13
|
+
activerecord (7.1.6)
|
|
14
|
+
activemodel (= 7.1.6)
|
|
15
|
+
activesupport (= 7.1.6)
|
|
16
16
|
timeout (>= 0.4.0)
|
|
17
|
-
activesupport (7.1.
|
|
17
|
+
activesupport (7.1.6)
|
|
18
18
|
base64
|
|
19
|
+
benchmark (>= 0.3)
|
|
19
20
|
bigdecimal
|
|
20
21
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
21
22
|
connection_pool (>= 2.2.5)
|
|
22
23
|
drb
|
|
23
24
|
i18n (>= 1.6, < 2)
|
|
25
|
+
logger (>= 1.4.2)
|
|
24
26
|
minitest (>= 5.1)
|
|
25
27
|
mutex_m
|
|
28
|
+
securerandom (>= 0.3)
|
|
26
29
|
tzinfo (~> 2.0)
|
|
27
30
|
appraisal (2.5.0)
|
|
28
31
|
bundler
|
|
29
32
|
rake
|
|
30
33
|
thor (>= 0.14.0)
|
|
31
|
-
ast (2.4.
|
|
32
|
-
base64 (0.
|
|
33
|
-
|
|
34
|
+
ast (2.4.3)
|
|
35
|
+
base64 (0.3.0)
|
|
36
|
+
benchmark (0.5.0)
|
|
37
|
+
bigdecimal (4.1.2)
|
|
34
38
|
coderay (1.1.3)
|
|
35
|
-
concurrent-ruby (1.
|
|
36
|
-
connection_pool (
|
|
37
|
-
database_cleaner (2.0
|
|
39
|
+
concurrent-ruby (1.3.7)
|
|
40
|
+
connection_pool (3.0.2)
|
|
41
|
+
database_cleaner (2.1.0)
|
|
38
42
|
database_cleaner-active_record (>= 2, < 3)
|
|
39
|
-
database_cleaner-active_record (2.
|
|
43
|
+
database_cleaner-active_record (2.2.2)
|
|
40
44
|
activerecord (>= 5.a)
|
|
41
|
-
database_cleaner-core (~> 2.0
|
|
42
|
-
database_cleaner-core (2.0
|
|
43
|
-
diff-lcs (1.
|
|
44
|
-
drb (2.2.
|
|
45
|
-
|
|
46
|
-
ffi (1.
|
|
47
|
-
formatador (1.
|
|
45
|
+
database_cleaner-core (~> 2.0)
|
|
46
|
+
database_cleaner-core (2.1.0)
|
|
47
|
+
diff-lcs (1.6.2)
|
|
48
|
+
drb (2.2.3)
|
|
49
|
+
ffi (1.17.4-arm64-darwin)
|
|
50
|
+
ffi (1.17.4-x86_64-linux-gnu)
|
|
51
|
+
formatador (1.2.3)
|
|
52
|
+
reline
|
|
48
53
|
fuubar (2.5.1)
|
|
49
54
|
rspec-core (~> 3.0)
|
|
50
55
|
ruby-progressbar (~> 1.4)
|
|
51
|
-
guard (2.
|
|
56
|
+
guard (2.20.2)
|
|
52
57
|
formatador (>= 0.2.4)
|
|
53
58
|
listen (>= 2.7, < 4.0)
|
|
59
|
+
logger (~> 1.6)
|
|
54
60
|
lumberjack (>= 1.0.12, < 2.0)
|
|
55
61
|
nenv (~> 0.1)
|
|
56
62
|
notiffany (~> 0.0)
|
|
@@ -62,94 +68,118 @@ GEM
|
|
|
62
68
|
guard (~> 2.1)
|
|
63
69
|
guard-compat (~> 1.1)
|
|
64
70
|
rspec (>= 2.99.0, < 4.0)
|
|
65
|
-
i18n (1.
|
|
71
|
+
i18n (1.15.2)
|
|
66
72
|
concurrent-ruby (~> 1.0)
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
73
|
+
io-console (0.9.5)
|
|
74
|
+
json (3.1.0)
|
|
75
|
+
language_server-protocol (3.17.0.6)
|
|
76
|
+
lint_roller (1.1.0)
|
|
77
|
+
listen (3.10.1)
|
|
78
|
+
logger
|
|
70
79
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
|
71
80
|
rb-inotify (~> 0.9, >= 0.9.10)
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
81
|
+
logger (1.7.0)
|
|
82
|
+
lumberjack (1.4.2)
|
|
83
|
+
method_source (1.1.0)
|
|
84
|
+
minitest (6.0.6)
|
|
85
|
+
drb (~> 2.0)
|
|
86
|
+
prism (~> 1.5)
|
|
87
|
+
mutex_m (0.3.0)
|
|
76
88
|
nenv (0.3.0)
|
|
77
89
|
notiffany (0.1.3)
|
|
78
90
|
nenv (~> 0.1)
|
|
79
91
|
shellany (~> 0.0)
|
|
80
|
-
parallel (
|
|
81
|
-
parser (3.
|
|
92
|
+
parallel (2.3.0)
|
|
93
|
+
parser (3.3.13.0)
|
|
82
94
|
ast (~> 2.4.1)
|
|
83
95
|
racc
|
|
84
|
-
|
|
96
|
+
prism (1.9.0)
|
|
97
|
+
pry (0.16.1)
|
|
85
98
|
coderay (~> 1.1)
|
|
86
99
|
method_source (~> 1.0)
|
|
87
|
-
|
|
100
|
+
reline (>= 0.6.0)
|
|
101
|
+
racc (1.8.1)
|
|
88
102
|
rainbow (3.1.1)
|
|
89
|
-
rake (13.
|
|
103
|
+
rake (13.4.2)
|
|
90
104
|
rb-fsevent (0.11.2)
|
|
91
|
-
rb-inotify (0.
|
|
105
|
+
rb-inotify (0.11.1)
|
|
92
106
|
ffi (~> 1.0)
|
|
93
|
-
regexp_parser (2.
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
rspec-
|
|
98
|
-
rspec-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
107
|
+
regexp_parser (2.13.1)
|
|
108
|
+
reline (0.7.0)
|
|
109
|
+
io-console (~> 0.5)
|
|
110
|
+
rspec (3.13.2)
|
|
111
|
+
rspec-core (~> 3.13.0)
|
|
112
|
+
rspec-expectations (~> 3.13.0)
|
|
113
|
+
rspec-mocks (~> 3.13.0)
|
|
114
|
+
rspec-core (3.13.7)
|
|
115
|
+
rspec-support (~> 3.13.0)
|
|
116
|
+
rspec-expectations (3.13.6)
|
|
102
117
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
103
|
-
rspec-support (~> 3.
|
|
104
|
-
rspec-mocks (3.
|
|
118
|
+
rspec-support (~> 3.13.0)
|
|
119
|
+
rspec-mocks (3.13.9)
|
|
105
120
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
106
|
-
rspec-support (~> 3.
|
|
107
|
-
rspec-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
parallel (~> 1.10)
|
|
115
|
-
parser (>= 3.2.2.4)
|
|
121
|
+
rspec-support (~> 3.13.0)
|
|
122
|
+
rspec-support (3.13.8)
|
|
123
|
+
rubocop (1.91.0)
|
|
124
|
+
json (>= 2.3)
|
|
125
|
+
language_server-protocol (~> 3.17.0.2)
|
|
126
|
+
lint_roller (~> 1.1.0)
|
|
127
|
+
parallel (>= 1.10)
|
|
128
|
+
parser (>= 3.3.0.2)
|
|
116
129
|
rainbow (>= 2.2.2, < 4.0)
|
|
117
|
-
regexp_parser (>=
|
|
118
|
-
|
|
119
|
-
rubocop-ast (>= 1.30.0, < 2.0)
|
|
130
|
+
regexp_parser (>= 2.9.3, < 3.0)
|
|
131
|
+
rubocop-ast (>= 1.49.0, < 2.0)
|
|
120
132
|
ruby-progressbar (~> 1.7)
|
|
121
|
-
unicode-display_width (>= 2.4.0, <
|
|
122
|
-
rubocop-ast (1.
|
|
123
|
-
parser (>= 3.
|
|
133
|
+
unicode-display_width (>= 2.4.0, < 4.0)
|
|
134
|
+
rubocop-ast (1.51.0)
|
|
135
|
+
parser (>= 3.3.7.2)
|
|
136
|
+
prism (>= 1.7)
|
|
137
|
+
rubocop-performance (1.26.1)
|
|
138
|
+
lint_roller (~> 1.1)
|
|
139
|
+
rubocop (>= 1.75.0, < 2.0)
|
|
140
|
+
rubocop-ast (>= 1.47.1, < 2.0)
|
|
124
141
|
ruby-progressbar (1.13.0)
|
|
125
|
-
|
|
142
|
+
securerandom (0.4.1)
|
|
126
143
|
shellany (0.0.1)
|
|
127
|
-
sqlite3 (
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
144
|
+
sqlite3 (2.10.2-arm64-darwin)
|
|
145
|
+
sqlite3 (2.10.2-x86_64-linux-gnu)
|
|
146
|
+
standard (1.57.0)
|
|
147
|
+
language_server-protocol (~> 3.17.0.2)
|
|
148
|
+
lint_roller (~> 1.0)
|
|
149
|
+
rubocop (~> 1.91.0)
|
|
150
|
+
standard-custom (~> 1.0.0)
|
|
151
|
+
standard-performance (~> 1.8)
|
|
152
|
+
standard-custom (1.0.2)
|
|
153
|
+
lint_roller (~> 1.0)
|
|
154
|
+
rubocop (~> 1.50)
|
|
155
|
+
standard-performance (1.9.0)
|
|
156
|
+
lint_roller (~> 1.1)
|
|
157
|
+
rubocop-performance (~> 1.26.0)
|
|
158
|
+
thor (1.5.0)
|
|
159
|
+
timeout (0.6.1)
|
|
131
160
|
tzinfo (2.0.6)
|
|
132
161
|
concurrent-ruby (~> 1.0)
|
|
133
|
-
unicode-display_width (
|
|
162
|
+
unicode-display_width (3.3.0)
|
|
163
|
+
unicode-emoji (~> 4.3)
|
|
164
|
+
unicode-emoji (4.3.0)
|
|
134
165
|
|
|
135
166
|
PLATFORMS
|
|
136
|
-
arm64-darwin-
|
|
167
|
+
arm64-darwin-24
|
|
168
|
+
x86_64-linux
|
|
137
169
|
|
|
138
170
|
DEPENDENCIES
|
|
139
|
-
activerecord (= 7.1.
|
|
140
|
-
activesupport (= 7.1.
|
|
171
|
+
activerecord (= 7.1.6)
|
|
172
|
+
activesupport (= 7.1.6)
|
|
141
173
|
appraisal
|
|
142
174
|
auto_increment!
|
|
143
|
-
bundler
|
|
144
175
|
database_cleaner
|
|
145
176
|
fuubar
|
|
146
177
|
guard
|
|
147
178
|
guard-rspec
|
|
148
179
|
rake
|
|
149
180
|
rspec
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
sqlite3 (>= 1.3.13)
|
|
181
|
+
sqlite3 (~> 2.10.2)
|
|
182
|
+
standard
|
|
153
183
|
|
|
154
184
|
BUNDLED WITH
|
|
155
185
|
2.4.22
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# This file was generated by Appraisal
|
|
2
|
+
|
|
3
|
+
source "https://rubygems.org"
|
|
4
|
+
|
|
5
|
+
gem "activerecord", "7.2.3.1"
|
|
6
|
+
gem "activesupport", "7.2.3.1"
|
|
7
|
+
|
|
8
|
+
group :development do
|
|
9
|
+
gem "appraisal"
|
|
10
|
+
gem "database_cleaner"
|
|
11
|
+
gem "fuubar"
|
|
12
|
+
gem "guard"
|
|
13
|
+
gem "guard-rspec"
|
|
14
|
+
gem "rake"
|
|
15
|
+
gem "rspec"
|
|
16
|
+
gem "sqlite3", "~> 2.10.2"
|
|
17
|
+
gem "standard"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
gemspec path: "../"
|