role_fu 0.1.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 +7 -0
- data/Appraisals +19 -0
- data/CHANGELOG.md +5 -0
- data/LICENSE.txt +21 -0
- data/README.md +144 -0
- data/Rakefile +25 -0
- data/gemfiles/rails_7.0.gemfile +16 -0
- data/gemfiles/rails_7.0.gemfile.lock +419 -0
- data/gemfiles/rails_7.1.gemfile +16 -0
- data/gemfiles/rails_7.1.gemfile.lock +437 -0
- data/gemfiles/rails_7.2.gemfile +16 -0
- data/gemfiles/rails_7.2.gemfile.lock +431 -0
- data/gemfiles/rails_8.0.gemfile +16 -0
- data/gemfiles/rails_8.0.gemfile.lock +428 -0
- data/gemfiles/rails_8.1.gemfile +16 -0
- data/gemfiles/rails_8.1.gemfile.lock +430 -0
- data/lefthook.yml +11 -0
- data/lib/generators/role_fu/install_generator.rb +17 -0
- data/lib/generators/role_fu/role_fu_generator.rb +43 -0
- data/lib/generators/role_fu/templates/migration.rb.erb +22 -0
- data/lib/generators/role_fu/templates/role.rb.erb +5 -0
- data/lib/generators/role_fu/templates/role_assignment.rb.erb +5 -0
- data/lib/generators/role_fu/templates/role_fu.rb +12 -0
- data/lib/role_fu/configuration.rb +35 -0
- data/lib/role_fu/resourceable.rb +156 -0
- data/lib/role_fu/role.rb +21 -0
- data/lib/role_fu/role_assignment.rb +31 -0
- data/lib/role_fu/roleable.rb +290 -0
- data/lib/role_fu/version.rb +5 -0
- data/lib/role_fu.rb +16 -0
- data/sig/role_fu.rbs +4 -0
- metadata +173 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 7d8ca75bef3838c779e395c17a16c8e61ddb6a7fdab7b2819412cd9356213436
|
|
4
|
+
data.tar.gz: b3b280add77cac1f4778c7e72b4ec3717e9554ab053cbcce869ef7180dd98ed2
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 0c7448aa048ad1836888270417e15d2acf5375cef727059cac77e9dea5c644d2b5156fc9e90134d9918367b38e4c127f753f5dda01b836c24794baf0102646dd
|
|
7
|
+
data.tar.gz: 57a6f48677cb49653b3c22e298b13fb3ac13003bb7e8d895e9c17396304e8385b7fb7162db426a7862ce1aad3031396e66dda60a897f898952594ee6011a4784
|
data/Appraisals
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
appraise "rails-7.0" do
|
|
2
|
+
gem "rails", "~> 7.0.0"
|
|
3
|
+
end
|
|
4
|
+
|
|
5
|
+
appraise "rails-7.1" do
|
|
6
|
+
gem "rails", "~> 7.1.0"
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
appraise "rails-7.2" do
|
|
10
|
+
gem "rails", "~> 7.2.0"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
appraise "rails-8.0" do
|
|
14
|
+
gem "rails", "~> 8.0.0"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
appraise "rails-8.1" do
|
|
18
|
+
gem "rails", "~> 8.1.0"
|
|
19
|
+
end
|
data/CHANGELOG.md
ADDED
data/LICENSE.txt
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Alexey Poimtsev
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# RoleFu
|
|
2
|
+
|
|
3
|
+
RoleFu is a modern, explicit role management gem for Ruby on Rails. It is designed as a cleaner, more performant alternative to `rolify`.
|
|
4
|
+
|
|
5
|
+
## Why RoleFu?
|
|
6
|
+
|
|
7
|
+
- **Explicit Models**: Unlike Rolify which often uses hidden `has_and_belongs_to_many` tables, RoleFu uses an explicit `RoleAssignment` join model. This makes it easier to extend with metadata (e.g., `created_by`, `expires_at`).
|
|
8
|
+
- **N+1 Prevention**: Built-in support for `has_cached_role?` to work with preloaded associations.
|
|
9
|
+
- **Strict by Default**: Focused on resource-specific roles with clear `has_role?` semantics.
|
|
10
|
+
- **Orphaned Role Cleanup**: Automatically deletes roles when the last user assignment is removed.
|
|
11
|
+
|
|
12
|
+
## Installation
|
|
13
|
+
|
|
14
|
+
Add this line to your application's Gemfile:
|
|
15
|
+
|
|
16
|
+
```ruby
|
|
17
|
+
gem 'role_fu'
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
And then execute:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
bundle install
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Setup
|
|
27
|
+
|
|
28
|
+
1. Run the install generator to create the configuration:
|
|
29
|
+
```bash
|
|
30
|
+
rails generate role_fu:install
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
2. Generate the Role models (default names are `Role` and `RoleAssignment`):
|
|
34
|
+
```bash
|
|
35
|
+
rails generate role_fu Role User
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
3. Run migrations:
|
|
39
|
+
```bash
|
|
40
|
+
rails db:migrate
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Usage
|
|
44
|
+
|
|
45
|
+
### Roleable (User Model)
|
|
46
|
+
|
|
47
|
+
Include `RoleFu::Roleable` in your User model (done automatically by the generator).
|
|
48
|
+
|
|
49
|
+
```ruby
|
|
50
|
+
class User < ApplicationRecord
|
|
51
|
+
include RoleFu::Roleable
|
|
52
|
+
|
|
53
|
+
# Optional callbacks
|
|
54
|
+
role_fu_options after_add: :notify_user
|
|
55
|
+
|
|
56
|
+
def notify_user(role)
|
|
57
|
+
# ...
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
#### Basic Operations
|
|
63
|
+
|
|
64
|
+
```ruby
|
|
65
|
+
user = User.find(1)
|
|
66
|
+
|
|
67
|
+
# Global roles
|
|
68
|
+
user.add_role(:admin)
|
|
69
|
+
user.grant(:admin) # Alias
|
|
70
|
+
user.has_role?(:admin) # => true
|
|
71
|
+
user.remove_role(:admin)
|
|
72
|
+
user.revoke(:admin) # Alias
|
|
73
|
+
|
|
74
|
+
# Resource-specific roles
|
|
75
|
+
org = Organization.first
|
|
76
|
+
user.add_role(:manager, org)
|
|
77
|
+
user.has_role?(:manager, org) # => true
|
|
78
|
+
user.has_role?(:manager) # => false (strict check)
|
|
79
|
+
user.has_role?(:manager, :any) # => true
|
|
80
|
+
user.only_has_role?(:manager, org) # => true if this is their only role
|
|
81
|
+
|
|
82
|
+
# Scopes (Finders)
|
|
83
|
+
User.with_role(:admin)
|
|
84
|
+
User.with_role(:manager, org)
|
|
85
|
+
User.without_role(:admin)
|
|
86
|
+
User.with_any_role(:admin, :editor)
|
|
87
|
+
User.with_all_roles(:admin, :manager)
|
|
88
|
+
|
|
89
|
+
# Resource Scopes
|
|
90
|
+
Organization.with_role(:manager, user)
|
|
91
|
+
Organization.without_role(:manager, user)
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
#### Performance (N+1 Prevention)
|
|
95
|
+
|
|
96
|
+
Use `has_cached_role?` when roles are preloaded.
|
|
97
|
+
|
|
98
|
+
```ruby
|
|
99
|
+
users = User.includes(:roles).all
|
|
100
|
+
users.each do |user|
|
|
101
|
+
user.has_cached_role?(:admin) # No extra queries!
|
|
102
|
+
end
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Resourceable (Models with roles)
|
|
106
|
+
|
|
107
|
+
Include `RoleFu::Resourceable` in any model that should have roles scoped to it.
|
|
108
|
+
|
|
109
|
+
```ruby
|
|
110
|
+
class Organization < ApplicationRecord
|
|
111
|
+
include RoleFu::Resourceable
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
org = Organization.first
|
|
115
|
+
org.users_with_role(:manager)
|
|
116
|
+
org.count_users_with_role(:admin)
|
|
117
|
+
org.available_roles # ["manager", "admin"]
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Comparison with Rolify
|
|
121
|
+
|
|
122
|
+
| Feature | Rolify | RoleFu |
|
|
123
|
+
|---------|--------|--------|
|
|
124
|
+
| Join Model | Implicit (HABTM) | Explicit (RoleAssignment) |
|
|
125
|
+
| Performance | Frequent N+1 | Cached role support + Optimized Scopes |
|
|
126
|
+
| Orphaned Roles | Configurable cleanup | Automatic cleanup |
|
|
127
|
+
| Scopes | `User.with_role` | `User.with_role`, `without_role`, `with_any`, `with_all` |
|
|
128
|
+
| Modern Rails | Older codebase | Optimized for Rails 7+ |
|
|
129
|
+
|
|
130
|
+
## Configuration
|
|
131
|
+
|
|
132
|
+
If your models are named differently (e.g., `Account` instead of `User`, or `Group` instead of `Role`), you can configure them in `config/initializers/role_fu.rb`:
|
|
133
|
+
|
|
134
|
+
```ruby
|
|
135
|
+
RoleFu.configure do |config|
|
|
136
|
+
config.user_class_name = "Account"
|
|
137
|
+
config.role_class_name = "Group"
|
|
138
|
+
config.role_assignment_class_name = "GroupAssignment" # Optional
|
|
139
|
+
end
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## License
|
|
143
|
+
|
|
144
|
+
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "bundler/gem_tasks"
|
|
4
|
+
require "rspec/core/rake_task"
|
|
5
|
+
|
|
6
|
+
RSpec::Core::RakeTask.new(:spec)
|
|
7
|
+
|
|
8
|
+
require "rubocop/rake_task"
|
|
9
|
+
|
|
10
|
+
RuboCop::RakeTask.new
|
|
11
|
+
|
|
12
|
+
# Mock :environment task since we are not in a Rails app
|
|
13
|
+
task :environment do
|
|
14
|
+
# No-op
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
namespace :maintenance do
|
|
18
|
+
desc "Update all appraisal lockfiles"
|
|
19
|
+
task :update_appraisals do
|
|
20
|
+
sh "bundle exec appraisal install"
|
|
21
|
+
sh "bundle exec appraisal bundle update --all"
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
task default: %i[spec rubocop]
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# This file was generated by Appraisal
|
|
2
|
+
|
|
3
|
+
source "https://rubygems.org"
|
|
4
|
+
|
|
5
|
+
gem "irb"
|
|
6
|
+
gem "rake", "~> 13.0"
|
|
7
|
+
gem "rspec", "~> 3.0"
|
|
8
|
+
gem "standard", ">= 1.35.1", require: false
|
|
9
|
+
gem "rubocop-rspec", require: false
|
|
10
|
+
gem "rubocop-performance", require: false
|
|
11
|
+
gem "lefthook", require: false
|
|
12
|
+
gem "appraisal", require: false
|
|
13
|
+
gem "simplecov", require: false
|
|
14
|
+
gem "rails", "~> 7.0.0"
|
|
15
|
+
|
|
16
|
+
gemspec path: "../"
|
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: ..
|
|
3
|
+
specs:
|
|
4
|
+
role_fu (0.1.0)
|
|
5
|
+
activerecord (>= 7.0)
|
|
6
|
+
|
|
7
|
+
GEM
|
|
8
|
+
remote: https://rubygems.org/
|
|
9
|
+
specs:
|
|
10
|
+
actioncable (7.0.10)
|
|
11
|
+
actionpack (= 7.0.10)
|
|
12
|
+
activesupport (= 7.0.10)
|
|
13
|
+
nio4r (~> 2.0)
|
|
14
|
+
websocket-driver (>= 0.6.1)
|
|
15
|
+
actionmailbox (7.0.10)
|
|
16
|
+
actionpack (= 7.0.10)
|
|
17
|
+
activejob (= 7.0.10)
|
|
18
|
+
activerecord (= 7.0.10)
|
|
19
|
+
activestorage (= 7.0.10)
|
|
20
|
+
activesupport (= 7.0.10)
|
|
21
|
+
mail (>= 2.7.1)
|
|
22
|
+
net-imap
|
|
23
|
+
net-pop
|
|
24
|
+
net-smtp
|
|
25
|
+
actionmailer (7.0.10)
|
|
26
|
+
actionpack (= 7.0.10)
|
|
27
|
+
actionview (= 7.0.10)
|
|
28
|
+
activejob (= 7.0.10)
|
|
29
|
+
activesupport (= 7.0.10)
|
|
30
|
+
mail (~> 2.5, >= 2.5.4)
|
|
31
|
+
net-imap
|
|
32
|
+
net-pop
|
|
33
|
+
net-smtp
|
|
34
|
+
rails-dom-testing (~> 2.0)
|
|
35
|
+
actionpack (7.0.10)
|
|
36
|
+
actionview (= 7.0.10)
|
|
37
|
+
activesupport (= 7.0.10)
|
|
38
|
+
racc
|
|
39
|
+
rack (~> 2.0, >= 2.2.4)
|
|
40
|
+
rack-test (>= 0.6.3)
|
|
41
|
+
rails-dom-testing (~> 2.0)
|
|
42
|
+
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
|
43
|
+
actiontext (7.0.10)
|
|
44
|
+
actionpack (= 7.0.10)
|
|
45
|
+
activerecord (= 7.0.10)
|
|
46
|
+
activestorage (= 7.0.10)
|
|
47
|
+
activesupport (= 7.0.10)
|
|
48
|
+
globalid (>= 0.6.0)
|
|
49
|
+
nokogiri (>= 1.8.5)
|
|
50
|
+
actionview (7.0.10)
|
|
51
|
+
activesupport (= 7.0.10)
|
|
52
|
+
builder (~> 3.1)
|
|
53
|
+
erubi (~> 1.4)
|
|
54
|
+
rails-dom-testing (~> 2.0)
|
|
55
|
+
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
|
56
|
+
activejob (7.0.10)
|
|
57
|
+
activesupport (= 7.0.10)
|
|
58
|
+
globalid (>= 0.3.6)
|
|
59
|
+
activemodel (7.0.10)
|
|
60
|
+
activesupport (= 7.0.10)
|
|
61
|
+
activerecord (7.0.10)
|
|
62
|
+
activemodel (= 7.0.10)
|
|
63
|
+
activesupport (= 7.0.10)
|
|
64
|
+
activestorage (7.0.10)
|
|
65
|
+
actionpack (= 7.0.10)
|
|
66
|
+
activejob (= 7.0.10)
|
|
67
|
+
activerecord (= 7.0.10)
|
|
68
|
+
activesupport (= 7.0.10)
|
|
69
|
+
marcel (~> 1.0)
|
|
70
|
+
mini_mime (>= 1.1.0)
|
|
71
|
+
activesupport (7.0.10)
|
|
72
|
+
base64
|
|
73
|
+
benchmark (>= 0.3)
|
|
74
|
+
bigdecimal
|
|
75
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
76
|
+
drb
|
|
77
|
+
i18n (>= 1.6, < 2)
|
|
78
|
+
logger (>= 1.4.2)
|
|
79
|
+
minitest (>= 5.1)
|
|
80
|
+
mutex_m
|
|
81
|
+
securerandom (>= 0.3)
|
|
82
|
+
tzinfo (~> 2.0)
|
|
83
|
+
appraisal (2.5.0)
|
|
84
|
+
bundler
|
|
85
|
+
rake
|
|
86
|
+
thor (>= 0.14.0)
|
|
87
|
+
ast (2.4.3)
|
|
88
|
+
base64 (0.3.0)
|
|
89
|
+
benchmark (0.5.0)
|
|
90
|
+
bigdecimal (4.0.1)
|
|
91
|
+
builder (3.3.0)
|
|
92
|
+
concurrent-ruby (1.3.6)
|
|
93
|
+
crass (1.0.6)
|
|
94
|
+
date (3.5.1)
|
|
95
|
+
diff-lcs (1.6.2)
|
|
96
|
+
docile (1.4.1)
|
|
97
|
+
drb (2.2.3)
|
|
98
|
+
erb (6.0.1)
|
|
99
|
+
erubi (1.13.1)
|
|
100
|
+
globalid (1.3.0)
|
|
101
|
+
activesupport (>= 6.1)
|
|
102
|
+
i18n (1.14.8)
|
|
103
|
+
concurrent-ruby (~> 1.0)
|
|
104
|
+
io-console (0.8.2)
|
|
105
|
+
irb (1.16.0)
|
|
106
|
+
pp (>= 0.6.0)
|
|
107
|
+
rdoc (>= 4.0.0)
|
|
108
|
+
reline (>= 0.4.2)
|
|
109
|
+
json (2.18.1)
|
|
110
|
+
language_server-protocol (3.17.0.5)
|
|
111
|
+
lefthook (2.1.0)
|
|
112
|
+
lint_roller (1.1.0)
|
|
113
|
+
logger (1.7.0)
|
|
114
|
+
loofah (2.25.0)
|
|
115
|
+
crass (~> 1.0.2)
|
|
116
|
+
nokogiri (>= 1.12.0)
|
|
117
|
+
mail (2.9.0)
|
|
118
|
+
logger
|
|
119
|
+
mini_mime (>= 0.1.1)
|
|
120
|
+
net-imap
|
|
121
|
+
net-pop
|
|
122
|
+
net-smtp
|
|
123
|
+
marcel (1.1.0)
|
|
124
|
+
method_source (1.1.0)
|
|
125
|
+
mini_mime (1.1.5)
|
|
126
|
+
minitest (6.0.1)
|
|
127
|
+
prism (~> 1.5)
|
|
128
|
+
mutex_m (0.3.0)
|
|
129
|
+
net-imap (0.6.2)
|
|
130
|
+
date
|
|
131
|
+
net-protocol
|
|
132
|
+
net-pop (0.1.2)
|
|
133
|
+
net-protocol
|
|
134
|
+
net-protocol (0.2.2)
|
|
135
|
+
timeout
|
|
136
|
+
net-smtp (0.5.1)
|
|
137
|
+
net-protocol
|
|
138
|
+
nio4r (2.7.5)
|
|
139
|
+
nokogiri (1.19.0-aarch64-linux-gnu)
|
|
140
|
+
racc (~> 1.4)
|
|
141
|
+
nokogiri (1.19.0-aarch64-linux-musl)
|
|
142
|
+
racc (~> 1.4)
|
|
143
|
+
nokogiri (1.19.0-arm-linux-gnu)
|
|
144
|
+
racc (~> 1.4)
|
|
145
|
+
nokogiri (1.19.0-arm-linux-musl)
|
|
146
|
+
racc (~> 1.4)
|
|
147
|
+
nokogiri (1.19.0-arm64-darwin)
|
|
148
|
+
racc (~> 1.4)
|
|
149
|
+
nokogiri (1.19.0-x86_64-darwin)
|
|
150
|
+
racc (~> 1.4)
|
|
151
|
+
nokogiri (1.19.0-x86_64-linux-gnu)
|
|
152
|
+
racc (~> 1.4)
|
|
153
|
+
nokogiri (1.19.0-x86_64-linux-musl)
|
|
154
|
+
racc (~> 1.4)
|
|
155
|
+
parallel (1.27.0)
|
|
156
|
+
parser (3.3.10.1)
|
|
157
|
+
ast (~> 2.4.1)
|
|
158
|
+
racc
|
|
159
|
+
pp (0.6.3)
|
|
160
|
+
prettyprint
|
|
161
|
+
prettyprint (0.2.0)
|
|
162
|
+
prism (1.9.0)
|
|
163
|
+
psych (5.3.1)
|
|
164
|
+
date
|
|
165
|
+
stringio
|
|
166
|
+
racc (1.8.1)
|
|
167
|
+
rack (2.2.21)
|
|
168
|
+
rack-test (2.2.0)
|
|
169
|
+
rack (>= 1.3)
|
|
170
|
+
rails (7.0.10)
|
|
171
|
+
actioncable (= 7.0.10)
|
|
172
|
+
actionmailbox (= 7.0.10)
|
|
173
|
+
actionmailer (= 7.0.10)
|
|
174
|
+
actionpack (= 7.0.10)
|
|
175
|
+
actiontext (= 7.0.10)
|
|
176
|
+
actionview (= 7.0.10)
|
|
177
|
+
activejob (= 7.0.10)
|
|
178
|
+
activemodel (= 7.0.10)
|
|
179
|
+
activerecord (= 7.0.10)
|
|
180
|
+
activestorage (= 7.0.10)
|
|
181
|
+
activesupport (= 7.0.10)
|
|
182
|
+
bundler (>= 1.15.0)
|
|
183
|
+
railties (= 7.0.10)
|
|
184
|
+
rails-dom-testing (2.3.0)
|
|
185
|
+
activesupport (>= 5.0.0)
|
|
186
|
+
minitest
|
|
187
|
+
nokogiri (>= 1.6)
|
|
188
|
+
rails-html-sanitizer (1.6.2)
|
|
189
|
+
loofah (~> 2.21)
|
|
190
|
+
nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
|
|
191
|
+
railties (7.0.10)
|
|
192
|
+
actionpack (= 7.0.10)
|
|
193
|
+
activesupport (= 7.0.10)
|
|
194
|
+
method_source
|
|
195
|
+
rake (>= 12.2)
|
|
196
|
+
thor (~> 1.0)
|
|
197
|
+
zeitwerk (~> 2.5)
|
|
198
|
+
rainbow (3.1.1)
|
|
199
|
+
rake (13.3.1)
|
|
200
|
+
rdoc (7.1.0)
|
|
201
|
+
erb
|
|
202
|
+
psych (>= 4.0.0)
|
|
203
|
+
tsort
|
|
204
|
+
regexp_parser (2.11.3)
|
|
205
|
+
reline (0.6.3)
|
|
206
|
+
io-console (~> 0.5)
|
|
207
|
+
rspec (3.13.2)
|
|
208
|
+
rspec-core (~> 3.13.0)
|
|
209
|
+
rspec-expectations (~> 3.13.0)
|
|
210
|
+
rspec-mocks (~> 3.13.0)
|
|
211
|
+
rspec-core (3.13.6)
|
|
212
|
+
rspec-support (~> 3.13.0)
|
|
213
|
+
rspec-expectations (3.13.5)
|
|
214
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
215
|
+
rspec-support (~> 3.13.0)
|
|
216
|
+
rspec-mocks (3.13.7)
|
|
217
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
218
|
+
rspec-support (~> 3.13.0)
|
|
219
|
+
rspec-support (3.13.7)
|
|
220
|
+
rubocop (1.82.1)
|
|
221
|
+
json (~> 2.3)
|
|
222
|
+
language_server-protocol (~> 3.17.0.2)
|
|
223
|
+
lint_roller (~> 1.1.0)
|
|
224
|
+
parallel (~> 1.10)
|
|
225
|
+
parser (>= 3.3.0.2)
|
|
226
|
+
rainbow (>= 2.2.2, < 4.0)
|
|
227
|
+
regexp_parser (>= 2.9.3, < 3.0)
|
|
228
|
+
rubocop-ast (>= 1.48.0, < 2.0)
|
|
229
|
+
ruby-progressbar (~> 1.7)
|
|
230
|
+
unicode-display_width (>= 2.4.0, < 4.0)
|
|
231
|
+
rubocop-ast (1.49.0)
|
|
232
|
+
parser (>= 3.3.7.2)
|
|
233
|
+
prism (~> 1.7)
|
|
234
|
+
rubocop-performance (1.26.1)
|
|
235
|
+
lint_roller (~> 1.1)
|
|
236
|
+
rubocop (>= 1.75.0, < 2.0)
|
|
237
|
+
rubocop-ast (>= 1.47.1, < 2.0)
|
|
238
|
+
rubocop-rspec (3.9.0)
|
|
239
|
+
lint_roller (~> 1.1)
|
|
240
|
+
rubocop (~> 1.81)
|
|
241
|
+
ruby-progressbar (1.13.0)
|
|
242
|
+
securerandom (0.4.1)
|
|
243
|
+
simplecov (0.22.0)
|
|
244
|
+
docile (~> 1.1)
|
|
245
|
+
simplecov-html (~> 0.11)
|
|
246
|
+
simplecov_json_formatter (~> 0.1)
|
|
247
|
+
simplecov-html (0.13.2)
|
|
248
|
+
simplecov_json_formatter (0.1.4)
|
|
249
|
+
sqlite3 (2.9.0-aarch64-linux-gnu)
|
|
250
|
+
sqlite3 (2.9.0-aarch64-linux-musl)
|
|
251
|
+
sqlite3 (2.9.0-arm-linux-gnu)
|
|
252
|
+
sqlite3 (2.9.0-arm-linux-musl)
|
|
253
|
+
sqlite3 (2.9.0-arm64-darwin)
|
|
254
|
+
sqlite3 (2.9.0-x86_64-darwin)
|
|
255
|
+
sqlite3 (2.9.0-x86_64-linux-gnu)
|
|
256
|
+
sqlite3 (2.9.0-x86_64-linux-musl)
|
|
257
|
+
standard (1.53.0)
|
|
258
|
+
language_server-protocol (~> 3.17.0.2)
|
|
259
|
+
lint_roller (~> 1.0)
|
|
260
|
+
rubocop (~> 1.82.0)
|
|
261
|
+
standard-custom (~> 1.0.0)
|
|
262
|
+
standard-performance (~> 1.8)
|
|
263
|
+
standard-custom (1.0.2)
|
|
264
|
+
lint_roller (~> 1.0)
|
|
265
|
+
rubocop (~> 1.50)
|
|
266
|
+
standard-performance (1.9.0)
|
|
267
|
+
lint_roller (~> 1.1)
|
|
268
|
+
rubocop-performance (~> 1.26.0)
|
|
269
|
+
stringio (3.2.0)
|
|
270
|
+
thor (1.5.0)
|
|
271
|
+
timeout (0.6.0)
|
|
272
|
+
tsort (0.2.0)
|
|
273
|
+
tzinfo (2.0.6)
|
|
274
|
+
concurrent-ruby (~> 1.0)
|
|
275
|
+
unicode-display_width (3.2.0)
|
|
276
|
+
unicode-emoji (~> 4.1)
|
|
277
|
+
unicode-emoji (4.2.0)
|
|
278
|
+
websocket-driver (0.8.0)
|
|
279
|
+
base64
|
|
280
|
+
websocket-extensions (>= 0.1.0)
|
|
281
|
+
websocket-extensions (0.1.5)
|
|
282
|
+
zeitwerk (2.7.4)
|
|
283
|
+
|
|
284
|
+
PLATFORMS
|
|
285
|
+
aarch64-linux-gnu
|
|
286
|
+
aarch64-linux-musl
|
|
287
|
+
arm-linux-gnu
|
|
288
|
+
arm-linux-musl
|
|
289
|
+
arm64-darwin
|
|
290
|
+
x86_64-darwin
|
|
291
|
+
x86_64-linux-gnu
|
|
292
|
+
x86_64-linux-musl
|
|
293
|
+
|
|
294
|
+
DEPENDENCIES
|
|
295
|
+
appraisal
|
|
296
|
+
irb
|
|
297
|
+
lefthook
|
|
298
|
+
rails (~> 7.0.0)
|
|
299
|
+
rake (~> 13.0)
|
|
300
|
+
role_fu!
|
|
301
|
+
rspec (~> 3.0)
|
|
302
|
+
rubocop-performance
|
|
303
|
+
rubocop-rspec
|
|
304
|
+
simplecov
|
|
305
|
+
sqlite3 (~> 2.0)
|
|
306
|
+
standard (>= 1.35.1)
|
|
307
|
+
|
|
308
|
+
CHECKSUMS
|
|
309
|
+
actioncable (7.0.10) sha256=7aa02ea26d6cc21c33e604bb28a0759c5212653311bc42105f96f709e507afab
|
|
310
|
+
actionmailbox (7.0.10) sha256=1236f472d86db056f97b3602391becab69c84d9f79d963b9c9b50056e213c1e6
|
|
311
|
+
actionmailer (7.0.10) sha256=53bc7aac1659ef97a216c43002ea8286931d7b97f252b27152ac15de1b2585ef
|
|
312
|
+
actionpack (7.0.10) sha256=4c524b3b401cc828efb3fcd6f3de56ac1ec0180843b74f54357f58b0256f9509
|
|
313
|
+
actiontext (7.0.10) sha256=ffadcbb9b21c09e9bfe946a79739d92abc92a9097eb1db7675e52484804c1c8c
|
|
314
|
+
actionview (7.0.10) sha256=e5a9475ccfcde80dddf7ced701f44aedc4f8262286051db84ae2c48322ec000e
|
|
315
|
+
activejob (7.0.10) sha256=f31b974206569a362e8c6c07aa00f3099fcc0f365880929c23e79c739d90fceb
|
|
316
|
+
activemodel (7.0.10) sha256=e2e1e0a4664b69606363e9f6f59afadeab6fa8843c5fb73cd037bb72a40fa498
|
|
317
|
+
activerecord (7.0.10) sha256=63bc193d4c6944d85f53255362b67269d246a51bd664e09b1aa2cecfe5288c9a
|
|
318
|
+
activestorage (7.0.10) sha256=41906d59536170abcb480d05b2368ee06305307edcafc5e4891ffb7b0970eaa2
|
|
319
|
+
activesupport (7.0.10) sha256=01487b0774045918b36893af4f012986db8375f6c5850c0ffc75b940ede72305
|
|
320
|
+
appraisal (2.5.0) sha256=36989221be127913b0dba8d114da2001e6b2dceea7bd4951200eaba764eed3ce
|
|
321
|
+
ast (2.4.3) sha256=954615157c1d6a382bc27d690d973195e79db7f55e9765ac7c481c60bdb4d383
|
|
322
|
+
base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b
|
|
323
|
+
benchmark (0.5.0) sha256=465df122341aedcb81a2a24b4d3bd19b6c67c1530713fd533f3ff034e419236c
|
|
324
|
+
bigdecimal (4.0.1) sha256=8b07d3d065a9f921c80ceaea7c9d4ae596697295b584c296fe599dd0ad01c4a7
|
|
325
|
+
builder (3.3.0) sha256=497918d2f9dca528fdca4b88d84e4ef4387256d984b8154e9d5d3fe5a9c8835f
|
|
326
|
+
concurrent-ruby (1.3.6) sha256=6b56837e1e7e5292f9864f34b69c5a2cbc75c0cf5338f1ce9903d10fa762d5ab
|
|
327
|
+
crass (1.0.6) sha256=dc516022a56e7b3b156099abc81b6d2b08ea1ed12676ac7a5657617f012bd45d
|
|
328
|
+
date (3.5.1) sha256=750d06384d7b9c15d562c76291407d89e368dda4d4fff957eb94962d325a0dc0
|
|
329
|
+
diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962
|
|
330
|
+
docile (1.4.1) sha256=96159be799bfa73cdb721b840e9802126e4e03dfc26863db73647204c727f21e
|
|
331
|
+
drb (2.2.3) sha256=0b00d6fdb50995fe4a45dea13663493c841112e4068656854646f418fda13373
|
|
332
|
+
erb (6.0.1) sha256=28ecdd99c5472aebd5674d6061e3c6b0a45c049578b071e5a52c2a7f13c197e5
|
|
333
|
+
erubi (1.13.1) sha256=a082103b0885dbc5ecf1172fede897f9ebdb745a4b97a5e8dc63953db1ee4ad9
|
|
334
|
+
globalid (1.3.0) sha256=05c639ad6eb4594522a0b07983022f04aa7254626ab69445a0e493aa3786ff11
|
|
335
|
+
i18n (1.14.8) sha256=285778639134865c5e0f6269e0b818256017e8cde89993fdfcbfb64d088824a5
|
|
336
|
+
io-console (0.8.2) sha256=d6e3ae7a7cc7574f4b8893b4fca2162e57a825b223a177b7afa236c5ef9814cc
|
|
337
|
+
irb (1.16.0) sha256=2abe56c9ac947cdcb2f150572904ba798c1e93c890c256f8429981a7675b0806
|
|
338
|
+
json (2.18.1) sha256=fe112755501b8d0466b5ada6cf50c8c3f41e897fa128ac5d263ec09eedc9f986
|
|
339
|
+
language_server-protocol (3.17.0.5) sha256=fd1e39a51a28bf3eec959379985a72e296e9f9acfce46f6a79d31ca8760803cc
|
|
340
|
+
lefthook (2.1.0) sha256=a100dc90139806e62b9aa40cf32e9edf34f6cff10c8b55ebd14a1b0add4b86bf
|
|
341
|
+
lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87
|
|
342
|
+
logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203
|
|
343
|
+
loofah (2.25.0) sha256=df5ed7ac3bac6a4ec802df3877ee5cc86d027299f8952e6243b3dac446b060e6
|
|
344
|
+
mail (2.9.0) sha256=6fa6673ecd71c60c2d996260f9ee3dd387d4673b8169b502134659ece6d34941
|
|
345
|
+
marcel (1.1.0) sha256=fdcfcfa33cc52e93c4308d40e4090a5d4ea279e160a7f6af988260fa970e0bee
|
|
346
|
+
method_source (1.1.0) sha256=181301c9c45b731b4769bc81e8860e72f9161ad7d66dd99103c9ab84f560f5c5
|
|
347
|
+
mini_mime (1.1.5) sha256=8681b7e2e4215f2a159f9400b5816d85e9d8c6c6b491e96a12797e798f8bccef
|
|
348
|
+
minitest (6.0.1) sha256=7854c74f48e2e975969062833adc4013f249a4b212f5e7b9d5c040bf838d54bb
|
|
349
|
+
mutex_m (0.3.0) sha256=cfcb04ac16b69c4813777022fdceda24e9f798e48092a2b817eb4c0a782b0751
|
|
350
|
+
net-imap (0.6.2) sha256=08caacad486853c61676cca0c0c47df93db02abc4a8239a8b67eb0981428acc6
|
|
351
|
+
net-pop (0.1.2) sha256=848b4e982013c15b2f0382792268763b748cce91c9e91e36b0f27ed26420dff3
|
|
352
|
+
net-protocol (0.2.2) sha256=aa73e0cba6a125369de9837b8d8ef82a61849360eba0521900e2c3713aa162a8
|
|
353
|
+
net-smtp (0.5.1) sha256=ed96a0af63c524fceb4b29b0d352195c30d82dd916a42f03c62a3a70e5b70736
|
|
354
|
+
nio4r (2.7.5) sha256=6c90168e48fb5f8e768419c93abb94ba2b892a1d0602cb06eef16d8b7df1dca1
|
|
355
|
+
nokogiri (1.19.0-aarch64-linux-gnu) sha256=11a97ecc3c0e7e5edcf395720b10860ef493b768f6aa80c539573530bc933767
|
|
356
|
+
nokogiri (1.19.0-aarch64-linux-musl) sha256=eb70507f5e01bc23dad9b8dbec2b36ad0e61d227b42d292835020ff754fb7ba9
|
|
357
|
+
nokogiri (1.19.0-arm-linux-gnu) sha256=572a259026b2c8b7c161fdb6469fa2d0edd2b61cd599db4bbda93289abefbfe5
|
|
358
|
+
nokogiri (1.19.0-arm-linux-musl) sha256=23ed90922f1a38aed555d3de4d058e90850c731c5b756d191b3dc8055948e73c
|
|
359
|
+
nokogiri (1.19.0-arm64-darwin) sha256=0811dfd936d5f6dd3f6d32ef790568bf29b2b7bead9ba68866847b33c9cf5810
|
|
360
|
+
nokogiri (1.19.0-x86_64-darwin) sha256=1dad56220b603a8edb9750cd95798bffa2b8dd9dd9aa47f664009ee5b43e3067
|
|
361
|
+
nokogiri (1.19.0-x86_64-linux-gnu) sha256=f482b95c713d60031d48c44ce14562f8d2ce31e3a9e8dd0ccb131e9e5a68b58c
|
|
362
|
+
nokogiri (1.19.0-x86_64-linux-musl) sha256=1c4ca6b381622420073ce6043443af1d321e8ed93cc18b08e2666e5bd02ffae4
|
|
363
|
+
parallel (1.27.0) sha256=4ac151e1806b755fb4e2dc2332cbf0e54f2e24ba821ff2d3dcf86bf6dc4ae130
|
|
364
|
+
parser (3.3.10.1) sha256=06f6a725d2cd91e5e7f2b7c32ba143631e1f7c8ae2fb918fc4cebec187e6a688
|
|
365
|
+
pp (0.6.3) sha256=2951d514450b93ccfeb1df7d021cae0da16e0a7f95ee1e2273719669d0ab9df6
|
|
366
|
+
prettyprint (0.2.0) sha256=2bc9e15581a94742064a3cc8b0fb9d45aae3d03a1baa6ef80922627a0766f193
|
|
367
|
+
prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85
|
|
368
|
+
psych (5.3.1) sha256=eb7a57cef10c9d70173ff74e739d843ac3b2c019a003de48447b2963d81b1974
|
|
369
|
+
racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f
|
|
370
|
+
rack (2.2.21) sha256=14e2f72f0765455fe424ff601588ac5ce84e95784f59e99251ffe1527152f739
|
|
371
|
+
rack-test (2.2.0) sha256=005a36692c306ac0b4a9350355ee080fd09ddef1148a5f8b2ac636c720f5c463
|
|
372
|
+
rails (7.0.10) sha256=866eb2c53d3184543fdb770d7ea308e4ee518063226a9e176229f3c7a9537c25
|
|
373
|
+
rails-dom-testing (2.3.0) sha256=8acc7953a7b911ca44588bf08737bc16719f431a1cc3091a292bca7317925c1d
|
|
374
|
+
rails-html-sanitizer (1.6.2) sha256=35fce2ca8242da8775c83b6ba9c1bcaad6751d9eb73c1abaa8403475ab89a560
|
|
375
|
+
railties (7.0.10) sha256=d52a8b7a61ad941121a15a6596b2150e05c70b199c3afc9e9b73e63b3b1a57a7
|
|
376
|
+
rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a
|
|
377
|
+
rake (13.3.1) sha256=8c9e89d09f66a26a01264e7e3480ec0607f0c497a861ef16063604b1b08eb19c
|
|
378
|
+
rdoc (7.1.0) sha256=494899df0706c178596ca6e1d50f1b7eb285a9b2aae715be5abd742734f17363
|
|
379
|
+
regexp_parser (2.11.3) sha256=ca13f381a173b7a93450e53459075c9b76a10433caadcb2f1180f2c741fc55a4
|
|
380
|
+
reline (0.6.3) sha256=1198b04973565b36ec0f11542ab3f5cfeeec34823f4e54cebde90968092b1835
|
|
381
|
+
role_fu (0.1.0)
|
|
382
|
+
rspec (3.13.2) sha256=206284a08ad798e61f86d7ca3e376718d52c0bc944626b2349266f239f820587
|
|
383
|
+
rspec-core (3.13.6) sha256=a8823c6411667b60a8bca135364351dda34cd55e44ff94c4be4633b37d828b2d
|
|
384
|
+
rspec-expectations (3.13.5) sha256=33a4d3a1d95060aea4c94e9f237030a8f9eae5615e9bd85718fe3a09e4b58836
|
|
385
|
+
rspec-mocks (3.13.7) sha256=0979034e64b1d7a838aaaddf12bf065ea4dc40ef3d4c39f01f93ae2c66c62b1c
|
|
386
|
+
rspec-support (3.13.7) sha256=0640e5570872aafefd79867901deeeeb40b0c9875a36b983d85f54fb7381c47c
|
|
387
|
+
rubocop (1.82.1) sha256=09f1a6a654a960eda767aebea33e47603080f8e9c9a3f019bf9b94c9cab5e273
|
|
388
|
+
rubocop-ast (1.49.0) sha256=49c3676d3123a0923d333e20c6c2dbaaae2d2287b475273fddee0c61da9f71fd
|
|
389
|
+
rubocop-performance (1.26.1) sha256=cd19b936ff196df85829d264b522fd4f98b6c89ad271fa52744a8c11b8f71834
|
|
390
|
+
rubocop-rspec (3.9.0) sha256=8fa70a3619408237d789aeecfb9beef40576acc855173e60939d63332fdb55e2
|
|
391
|
+
ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33
|
|
392
|
+
securerandom (0.4.1) sha256=cc5193d414a4341b6e225f0cb4446aceca8e50d5e1888743fac16987638ea0b1
|
|
393
|
+
simplecov (0.22.0) sha256=fe2622c7834ff23b98066bb0a854284b2729a569ac659f82621fc22ef36213a5
|
|
394
|
+
simplecov-html (0.13.2) sha256=bd0b8e54e7c2d7685927e8d6286466359b6f16b18cb0df47b508e8d73c777246
|
|
395
|
+
simplecov_json_formatter (0.1.4) sha256=529418fbe8de1713ac2b2d612aa3daa56d316975d307244399fa4838c601b428
|
|
396
|
+
sqlite3 (2.9.0-aarch64-linux-gnu) sha256=cfe1e0216f46d7483839719bf827129151e6c680317b99d7b8fc1597a3e13473
|
|
397
|
+
sqlite3 (2.9.0-aarch64-linux-musl) sha256=56a35cb2d70779afc2ac191baf2c2148242285ecfed72f9b021218c5c4917913
|
|
398
|
+
sqlite3 (2.9.0-arm-linux-gnu) sha256=a19a21504b0d7c8c825fbbf37b358ae316b6bd0d0134c619874060b2eef05435
|
|
399
|
+
sqlite3 (2.9.0-arm-linux-musl) sha256=fca5b26197c70e3363115d3faaea34d7b2ad9c7f5fa8d8312e31b64e7556ee07
|
|
400
|
+
sqlite3 (2.9.0-arm64-darwin) sha256=a917bd9b84285766ff3300b7d79cd583f5a067594c8c1263e6441618c04a6ed3
|
|
401
|
+
sqlite3 (2.9.0-x86_64-darwin) sha256=59fe51baa3cb33c36d27ce78b4ed9360cd33ccca09498c2ae63850c97c0a6026
|
|
402
|
+
sqlite3 (2.9.0-x86_64-linux-gnu) sha256=72fff9bd750070ba3af695511ba5f0e0a2d8a9206f84869640b3e99dfaf3d5a5
|
|
403
|
+
sqlite3 (2.9.0-x86_64-linux-musl) sha256=ef716ba7a66d7deb1ccc402ac3a6d7343da17fac862793b7f0be3d2917253c90
|
|
404
|
+
standard (1.53.0) sha256=f3c9493385db7079d0abce6f7582f553122156997b81258cd361d3480eeacf9c
|
|
405
|
+
standard-custom (1.0.2) sha256=424adc84179a074f1a2a309bb9cf7cd6bfdb2b6541f20c6bf9436c0ba22a652b
|
|
406
|
+
standard-performance (1.9.0) sha256=49483d31be448292951d80e5e67cdcb576c2502103c7b40aec6f1b6e9c88e3f2
|
|
407
|
+
stringio (3.2.0) sha256=c37cb2e58b4ffbd33fe5cd948c05934af997b36e0b6ca6fdf43afa234cf222e1
|
|
408
|
+
thor (1.5.0) sha256=e3a9e55fe857e44859ce104a84675ab6e8cd59c650a49106a05f55f136425e73
|
|
409
|
+
timeout (0.6.0) sha256=6d722ad619f96ee383a0c557ec6eb8c4ecb08af3af62098a0be5057bf00de1af
|
|
410
|
+
tsort (0.2.0) sha256=9650a793f6859a43b6641671278f79cfead60ac714148aabe4e3f0060480089f
|
|
411
|
+
tzinfo (2.0.6) sha256=8daf828cc77bcf7d63b0e3bdb6caa47e2272dcfaf4fbfe46f8c3a9df087a829b
|
|
412
|
+
unicode-display_width (3.2.0) sha256=0cdd96b5681a5949cdbc2c55e7b420facae74c4aaf9a9815eee1087cb1853c42
|
|
413
|
+
unicode-emoji (4.2.0) sha256=519e69150f75652e40bf736106cfbc8f0f73aa3fb6a65afe62fefa7f80b0f80f
|
|
414
|
+
websocket-driver (0.8.0) sha256=ed0dba4b943c22f17f9a734817e808bc84cdce6a7e22045f5315aa57676d4962
|
|
415
|
+
websocket-extensions (0.1.5) sha256=1c6ba63092cda343eb53fc657110c71c754c56484aad42578495227d717a8241
|
|
416
|
+
zeitwerk (2.7.4) sha256=2bef90f356bdafe9a6c2bd32bcd804f83a4f9b8bc27f3600fff051eb3edcec8b
|
|
417
|
+
|
|
418
|
+
BUNDLED WITH
|
|
419
|
+
4.0.5
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# This file was generated by Appraisal
|
|
2
|
+
|
|
3
|
+
source "https://rubygems.org"
|
|
4
|
+
|
|
5
|
+
gem "irb"
|
|
6
|
+
gem "rake", "~> 13.0"
|
|
7
|
+
gem "rspec", "~> 3.0"
|
|
8
|
+
gem "standard", ">= 1.35.1", require: false
|
|
9
|
+
gem "rubocop-rspec", require: false
|
|
10
|
+
gem "rubocop-performance", require: false
|
|
11
|
+
gem "lefthook", require: false
|
|
12
|
+
gem "appraisal", require: false
|
|
13
|
+
gem "simplecov", require: false
|
|
14
|
+
gem "rails", "~> 7.1.0"
|
|
15
|
+
|
|
16
|
+
gemspec path: "../"
|