rs-activeadmin-searchable_select 4.0.5

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.
Files changed (145) hide show
  1. checksums.yaml +7 -0
  2. data/.actrc +20 -0
  3. data/.claude/commands/fix-tests.md +203 -0
  4. data/.github/workflows/ci.yml +170 -0
  5. data/.github/workflows/npm-publish.yml +47 -0
  6. data/.gitignore +27 -0
  7. data/.npmignore +58 -0
  8. data/.rspec +2 -0
  9. data/.rubocop.yml +67 -0
  10. data/.yardopts +2 -0
  11. data/AGENTS.md +39 -0
  12. data/Appraisals +15 -0
  13. data/CHANGELOG.md +24 -0
  14. data/CLAUDE.md +104 -0
  15. data/Gemfile +11 -0
  16. data/Gemfile.lock +366 -0
  17. data/LICENSE.txt +25 -0
  18. data/README.md +439 -0
  19. data/Rakefile +4 -0
  20. data/bin/rspec +17 -0
  21. data/config/database.yml +16 -0
  22. data/config.ru +28 -0
  23. data/docs/activeadmin-4-detailed-reference.md +932 -0
  24. data/docs/activeadmin-4-gem-migration-guide.md +313 -0
  25. data/docs/combustion.md +213 -0
  26. data/docs/for-next-session.md +199 -0
  27. data/docs/guide-update-your-app.md +213 -0
  28. data/docs/propshaft-readme.md +121 -0
  29. data/docs/propshaft-upgrade.md +267 -0
  30. data/docs/rails-7-asset-pipeline.md +279 -0
  31. data/docs/setup-activeadmin-app.md +552 -0
  32. data/docs/setup-activeadmin-gem.md +535 -0
  33. data/docs/upload-system.md +225 -0
  34. data/gemfiles/rails_7.x_active_admin_4.x.gemfile +11 -0
  35. data/gemfiles/rails_7.x_active_admin_4.x.gemfile.lock +371 -0
  36. data/gemfiles/rails_8.x_active_admin_4.x.gemfile +11 -0
  37. data/gemfiles/rails_8.x_active_admin_4.x.gemfile.lock +366 -0
  38. data/lefthook.yml +17 -0
  39. data/lib/activeadmin/inputs/filters/searchable_select_input.rb +13 -0
  40. data/lib/activeadmin/inputs/searchable_select_input.rb +11 -0
  41. data/lib/activeadmin/searchable_select/engine.rb +17 -0
  42. data/lib/activeadmin/searchable_select/option_collection.rb +119 -0
  43. data/lib/activeadmin/searchable_select/resource_dsl_extension.rb +56 -0
  44. data/lib/activeadmin/searchable_select/resource_extension.rb +10 -0
  45. data/lib/activeadmin/searchable_select/select_input_extension.rb +159 -0
  46. data/lib/activeadmin/searchable_select/version.rb +5 -0
  47. data/lib/activeadmin/searchable_select.rb +20 -0
  48. data/lib/activeadmin-searchable_select.rb +4 -0
  49. data/lib/generators/active_admin/searchable_select/install/install_generator.rb +217 -0
  50. data/package-lock.json +18 -0
  51. data/package.json +45 -0
  52. data/rs-activeadmin-searchable_select.gemspec +38 -0
  53. data/sonar-project.properties +25 -0
  54. data/spec/features/ajax_params_spec.rb +31 -0
  55. data/spec/features/end_to_end_spec.rb +227 -0
  56. data/spec/features/filter_input_spec.rb +137 -0
  57. data/spec/features/form_input_spec.rb +122 -0
  58. data/spec/features/inline_ajax_setting_spec.rb +26 -0
  59. data/spec/features/input_errors_spec.rb +76 -0
  60. data/spec/features/input_html_options_spec.rb +30 -0
  61. data/spec/features/options_dsl_spec.rb +220 -0
  62. data/spec/features/production_build_spec.rb +108 -0
  63. data/spec/internal/app/admin/categories.rb +26 -0
  64. data/spec/internal/app/admin/dashboard.rb +29 -0
  65. data/spec/internal/app/admin/option_types.rb +19 -0
  66. data/spec/internal/app/admin/option_values.rb +30 -0
  67. data/spec/internal/app/admin/posts.rb +27 -0
  68. data/spec/internal/app/admin/products.rb +22 -0
  69. data/spec/internal/app/admin/rgb_colors.rb +25 -0
  70. data/spec/internal/app/admin/tag_names.rb +21 -0
  71. data/spec/internal/app/admin/test_ajax_params_category.rb +10 -0
  72. data/spec/internal/app/admin/test_ajax_params_post.rb +20 -0
  73. data/spec/internal/app/admin/test_form_post_class.rb +7 -0
  74. data/spec/internal/app/admin/test_form_post_custom.rb +11 -0
  75. data/spec/internal/app/admin/test_form_post_resource.rb +11 -0
  76. data/spec/internal/app/admin/test_form_post_resource_custom.rb +12 -0
  77. data/spec/internal/app/admin/test_inline_ajax_post.rb +9 -0
  78. data/spec/internal/app/admin/test_input_html_post.rb +11 -0
  79. data/spec/internal/app/admin/test_posts_display_text.rb +9 -0
  80. data/spec/internal/app/admin/test_posts_filter.rb +9 -0
  81. data/spec/internal/app/admin/test_posts_named.rb +9 -0
  82. data/spec/internal/app/admin/test_posts_pagination.rb +9 -0
  83. data/spec/internal/app/admin/test_posts_payload_lambda.rb +11 -0
  84. data/spec/internal/app/admin/test_posts_payload_proc.rb +9 -0
  85. data/spec/internal/app/admin/test_posts_scope_lambda.rb +8 -0
  86. data/spec/internal/app/admin/test_posts_scope_params.rb +8 -0
  87. data/spec/internal/app/admin/test_posts_scope_user.rb +8 -0
  88. data/spec/internal/app/admin/test_posts_text_attr.rb +5 -0
  89. data/spec/internal/app/admin/users.rb +23 -0
  90. data/spec/internal/app/admin/variants.rb +31 -0
  91. data/spec/internal/app/assets/config/manifest.js +1 -0
  92. data/spec/internal/app/assets/javascripts/active_admin.js +2 -0
  93. data/spec/internal/app/assets/javascripts/searchable_select_test.js +2 -0
  94. data/spec/internal/app/controllers/application_controller.rb +5 -0
  95. data/spec/internal/app/css/active_admin_source.css +81 -0
  96. data/spec/internal/app/js/active_admin.js +17 -0
  97. data/spec/internal/app/models/article.rb +12 -0
  98. data/spec/internal/app/models/category.rb +12 -0
  99. data/spec/internal/app/models/internal/tag_name.rb +14 -0
  100. data/spec/internal/app/models/internal_tag_name.rb +11 -0
  101. data/spec/internal/app/models/option_type.rb +12 -0
  102. data/spec/internal/app/models/option_value.rb +4 -0
  103. data/spec/internal/app/models/post.rb +15 -0
  104. data/spec/internal/app/models/product.rb +12 -0
  105. data/spec/internal/app/models/rgb_color.rb +16 -0
  106. data/spec/internal/app/models/user.rb +12 -0
  107. data/spec/internal/app/models/variant.rb +12 -0
  108. data/spec/internal/build_activeadmin_css.js +115 -0
  109. data/spec/internal/config/database.yml +7 -0
  110. data/spec/internal/config/environment.rb +48 -0
  111. data/spec/internal/config/initializers/active_admin.rb +53 -0
  112. data/spec/internal/config/initializers/assets.rb +9 -0
  113. data/spec/internal/config/initializers/searchable_select.rb +6 -0
  114. data/spec/internal/config/routes.rb +4 -0
  115. data/spec/internal/config.ru +4 -0
  116. data/spec/internal/db/schema.rb +63 -0
  117. data/spec/internal/db/seeds.rb +88 -0
  118. data/spec/internal/esbuild.config.js +30 -0
  119. data/spec/internal/inject-jquery.js +4 -0
  120. data/spec/internal/log/.gitignore +1 -0
  121. data/spec/internal/package/LICENSE.txt +25 -0
  122. data/spec/internal/package/README.md +439 -0
  123. data/spec/internal/package/package.json +45 -0
  124. data/spec/internal/package/src/index.js +1 -0
  125. data/spec/internal/package/src/searchable_select/init.js +1 -0
  126. data/spec/internal/package/src/searchable_select.css +1 -0
  127. data/spec/internal/package/src/searchable_select.scss +1 -0
  128. data/spec/internal/package-lock.json +1385 -0
  129. data/spec/internal/package.json +26 -0
  130. data/spec/internal/public/favicon.ico +0 -0
  131. data/spec/internal/spec/internal/app/css/active_admin_source.css +38 -0
  132. data/spec/internal/spec/internal/log/test.log +0 -0
  133. data/spec/internal/tailwind-active_admin.config.js +53 -0
  134. data/spec/rails_helper.rb +86 -0
  135. data/spec/spec_helper.rb +137 -0
  136. data/spec/support/active_admin_helpers.rb +17 -0
  137. data/spec/support/capybara.rb +8 -0
  138. data/spec/support/models.rb +88 -0
  139. data/spec/support/pluck_polyfill.rb +12 -0
  140. data/spec/support/reset_settings.rb +5 -0
  141. data/src/index.js +77 -0
  142. data/src/searchable_select/init.js +58 -0
  143. data/src/searchable_select.css +5 -0
  144. data/src/searchable_select.css.map +1 -0
  145. metadata +405 -0
@@ -0,0 +1,225 @@
1
+ # CKEditor5-Rails Upload System Documentation
2
+
3
+ ## Overview
4
+
5
+ The CKEditor5-Rails gem implements a flexible image upload system that allows users to upload images directly from the editor to a server endpoint instead of embedding them as Base64. The system is designed to be backend-agnostic and can integrate with various storage solutions including ActiveStorage and Shrine.
6
+
7
+ ## Architecture
8
+
9
+ ### Core Components
10
+
11
+ #### 1. SimpleUploadAdapter Plugin (`lib/ckeditor5/rails/plugins/simple_upload_adapter.rb`)
12
+
13
+ The heart of the upload system is an inline JavaScript plugin that:
14
+ - Extends CKEditor5's Plugin class
15
+ - Requires the FileRepository plugin as a dependency
16
+ - Implements the upload adapter factory pattern
17
+ - Handles file uploads via XMLHttpRequest with progress tracking
18
+
19
+ **Location**: `lib/ckeditor5/rails/plugins/simple_upload_adapter.rb`
20
+
21
+ **Key Features**:
22
+ - Async/await based upload handling
23
+ - Progress tracking through XMLHttpRequest events
24
+ - CSRF token integration for Rails security
25
+ - Abort capability for cancelled uploads
26
+ - JSON response parsing for uploaded file URLs
27
+
28
+ #### 2. PropsInlinePlugin Base Class (`lib/ckeditor5/rails/editor/props_inline_plugin.rb`)
29
+
30
+ The upload adapter extends this base class which:
31
+ - Wraps JavaScript code in an async IIFE (Immediately Invoked Function Expression)
32
+ - Supports optional code compression via Terser
33
+ - Provides window-based plugin registration mechanism
34
+ - Handles plugin initialization errors gracefully
35
+
36
+ **Location**: `lib/ckeditor5/rails/editor/props_inline_plugin.rb`
37
+
38
+ #### 3. Plugin Registration System (`lib/ckeditor5/rails/plugins.rb`)
39
+
40
+ Central registry that:
41
+ - Loads all core plugins including SimpleUploadAdapter
42
+ - Manages plugin dependencies
43
+ - Handles plugin patches and fixes
44
+
45
+ **Location**: `lib/ckeditor5/rails/plugins.rb`
46
+
47
+ ## Configuration System
48
+
49
+ ### Preset Builder Integration (`lib/ckeditor5/rails/presets/preset_builder.rb`)
50
+
51
+ The upload adapter is configured through the preset system:
52
+
53
+ ```ruby
54
+ def simple_upload_adapter(upload_url = '/uploads', compress: !@disallow_inline_plugin_compression)
55
+ plugins do
56
+ remove(:Base64UploadAdapter) # Remove default Base64 adapter
57
+ end
58
+
59
+ plugin(Plugins::SimpleUploadAdapter.new(compress: compress))
60
+ configure(:simpleUpload, { uploadUrl: upload_url })
61
+ end
62
+ ```
63
+
64
+ **Location**: `lib/ckeditor5/rails/presets/preset_builder.rb:394-401`
65
+
66
+ **Configuration Steps**:
67
+ 1. Removes the default Base64UploadAdapter plugin
68
+ 2. Adds the SimpleUploadAdapter plugin
69
+ 3. Configures the upload URL endpoint
70
+ 4. Optionally enables/disables JavaScript compression
71
+
72
+ ### Usage in Presets
73
+
74
+ Upload functionality is enabled in presets via:
75
+
76
+ ```ruby
77
+ # In preset definition
78
+ simple_upload_adapter # Uses default '/uploads' endpoint
79
+ simple_upload_adapter '/custom' # Custom endpoint
80
+ ```
81
+
82
+ **Example Location**: `sandbox/config/initializers/ckeditor5.rb:82`
83
+
84
+ ## Frontend Implementation
85
+
86
+ ### Upload Flow
87
+
88
+ 1. **User Action**: User selects/pastes an image in the editor
89
+ 2. **Plugin Activation**: FileRepository triggers createUploadAdapter
90
+ 3. **Adapter Creation**: SimpleUploadAdapter creates an upload instance
91
+ 4. **FormData Preparation**: File wrapped in FormData with 'upload' field name
92
+ 5. **Security Headers**:
93
+ - X-Requested-With: XMLHttpRequest
94
+ - X-CSRF-Token: Extracted from meta tag
95
+ 6. **Upload Process**:
96
+ - Progress events update loader.uploaded/uploadTotal
97
+ - Success (200-299): Parse JSON response for URL
98
+ - Error handling for failed/aborted uploads
99
+ 7. **Editor Update**: Returned URL replaces placeholder image
100
+
101
+ ### Response Format
102
+
103
+ Server must return JSON with structure:
104
+ ```json
105
+ {
106
+ "url": "https://example.com/uploads/image.jpg"
107
+ }
108
+ ```
109
+
110
+ ## Integration Points
111
+
112
+ ### 1. Rails Controller
113
+
114
+ The upload endpoint (not included in gem) should:
115
+ - Accept POST requests to configured URL
116
+ - Process multipart/form-data with 'upload' field
117
+ - Store file using preferred backend (ActiveStorage, Shrine, etc.)
118
+ - Return JSON with uploaded file URL
119
+ - Handle CSRF token validation
120
+
121
+ ### 2. Helper Methods
122
+
123
+ Upload configuration accessible via:
124
+ - `ckeditor5_editor` helper in views
125
+ - Preset configuration in initializers
126
+ - Runtime configuration overrides
127
+
128
+ **Location**: `lib/ckeditor5/rails/editor/helpers/editor_helpers.rb`
129
+
130
+ ### 3. Engine Registration
131
+
132
+ Upload adapter available through:
133
+ - Engine preset system
134
+ - Direct plugin inclusion
135
+ - Configuration DSL methods
136
+
137
+ **Location**: `lib/ckeditor5/rails/engine.rb:83`
138
+
139
+ ## File Structure
140
+
141
+ ```
142
+ lib/ckeditor5/rails/
143
+ ├── plugins/
144
+ │ ├── simple_upload_adapter.rb # Main upload adapter implementation
145
+ │ └── ...
146
+ ├── editor/
147
+ │ ├── props_inline_plugin.rb # Base class for inline plugins
148
+ │ └── helpers/
149
+ │ └── editor_helpers.rb # View helpers for editor
150
+ ├── presets/
151
+ │ └── preset_builder.rb # Configuration DSL with upload method
152
+ └── engine.rb # Rails engine with upload registration
153
+ ```
154
+
155
+ ## Configuration Examples
156
+
157
+ ### Basic Setup
158
+
159
+ ```ruby
160
+ CKEditor5::Rails.configure do
161
+ # Enable with default /uploads endpoint
162
+ simple_upload_adapter
163
+ end
164
+ ```
165
+
166
+ ### Custom Endpoint
167
+
168
+ ```ruby
169
+ CKEditor5::Rails.configure do
170
+ # Custom upload endpoint
171
+ simple_upload_adapter '/api/images/upload'
172
+ end
173
+ ```
174
+
175
+ ### With Compression Disabled
176
+
177
+ ```ruby
178
+ CKEditor5::Rails.configure do
179
+ # Disable JavaScript compression for debugging
180
+ simple_upload_adapter '/uploads', compress: false
181
+ end
182
+ ```
183
+
184
+ ## Key Implementation Details
185
+
186
+ ### JavaScript Plugin Structure
187
+
188
+ The plugin is written as an ES6 module that:
189
+ 1. Imports required CKEditor5 modules dynamically
190
+ 2. Returns a class extending Plugin
191
+ 3. Implements standard CKEditor5 plugin lifecycle
192
+ 4. Integrates with FileRepository for upload management
193
+
194
+ ### Security Considerations
195
+
196
+ - CSRF token automatically extracted from Rails meta tag
197
+ - XMLHttpRequest marked with X-Requested-With header
198
+ - Server-side validation responsibility lies with implementer
199
+
200
+ ### Error Handling
201
+
202
+ - Network errors caught and rejected with descriptive messages
203
+ - HTTP status codes outside 200-299 range treated as errors
204
+ - Upload abort capability for user cancellation
205
+
206
+ ## Backend Requirements
207
+
208
+ To implement the upload endpoint:
209
+
210
+ 1. **Route Definition**: Add POST route to configured URL
211
+ 2. **File Processing**: Handle multipart upload with 'upload' parameter
212
+ 3. **Storage Backend**: Integrate with ActiveStorage, Shrine, or custom solution
213
+ 4. **Response Format**: Return JSON with 'url' key
214
+ 5. **Security**: Validate CSRF tokens and user permissions
215
+
216
+ ## Extension Points
217
+
218
+ The system supports:
219
+ - Multiple upload adapters via plugin system
220
+ - Custom configuration through preset builder
221
+ - Backend flexibility through endpoint abstraction
222
+ - Compression toggle for development/production
223
+ - Integration with various storage backends
224
+
225
+ This architecture provides a clean separation between the editor frontend and storage backend, allowing developers to implement uploads using their preferred Rails patterns and storage solutions.
@@ -0,0 +1,11 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activeadmin", "4.0.0.beta16"
6
+ gem "rspec_junit_formatter", require: false
7
+ gem "simplecov", require: false
8
+ gem "simplecov-cobertura", require: false
9
+ gem "rails", "~> 7.1"
10
+
11
+ gemspec path: "../"
@@ -0,0 +1,371 @@
1
+ PATH
2
+ remote: ..
3
+ specs:
4
+ rs-activeadmin-searchable_select (4.0.5)
5
+ activeadmin (~> 4.0.0.beta)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ actioncable (7.1.5.2)
11
+ actionpack (= 7.1.5.2)
12
+ activesupport (= 7.1.5.2)
13
+ nio4r (~> 2.0)
14
+ websocket-driver (>= 0.6.1)
15
+ zeitwerk (~> 2.6)
16
+ actionmailbox (7.1.5.2)
17
+ actionpack (= 7.1.5.2)
18
+ activejob (= 7.1.5.2)
19
+ activerecord (= 7.1.5.2)
20
+ activestorage (= 7.1.5.2)
21
+ activesupport (= 7.1.5.2)
22
+ mail (>= 2.7.1)
23
+ net-imap
24
+ net-pop
25
+ net-smtp
26
+ actionmailer (7.1.5.2)
27
+ actionpack (= 7.1.5.2)
28
+ actionview (= 7.1.5.2)
29
+ activejob (= 7.1.5.2)
30
+ activesupport (= 7.1.5.2)
31
+ mail (~> 2.5, >= 2.5.4)
32
+ net-imap
33
+ net-pop
34
+ net-smtp
35
+ rails-dom-testing (~> 2.2)
36
+ actionpack (7.1.5.2)
37
+ actionview (= 7.1.5.2)
38
+ activesupport (= 7.1.5.2)
39
+ nokogiri (>= 1.8.5)
40
+ racc
41
+ rack (>= 2.2.4)
42
+ rack-session (>= 1.0.1)
43
+ rack-test (>= 0.6.3)
44
+ rails-dom-testing (~> 2.2)
45
+ rails-html-sanitizer (~> 1.6)
46
+ actiontext (7.1.5.2)
47
+ actionpack (= 7.1.5.2)
48
+ activerecord (= 7.1.5.2)
49
+ activestorage (= 7.1.5.2)
50
+ activesupport (= 7.1.5.2)
51
+ globalid (>= 0.6.0)
52
+ nokogiri (>= 1.8.5)
53
+ actionview (7.1.5.2)
54
+ activesupport (= 7.1.5.2)
55
+ builder (~> 3.1)
56
+ erubi (~> 1.11)
57
+ rails-dom-testing (~> 2.2)
58
+ rails-html-sanitizer (~> 1.6)
59
+ activeadmin (4.0.0.beta16)
60
+ arbre (~> 2.0)
61
+ csv
62
+ formtastic (>= 5.0)
63
+ formtastic_i18n (>= 0.7)
64
+ inherited_resources (~> 2.0)
65
+ kaminari (>= 1.2.1)
66
+ railties (>= 7.0)
67
+ ransack (>= 4.0)
68
+ activejob (7.1.5.2)
69
+ activesupport (= 7.1.5.2)
70
+ globalid (>= 0.3.6)
71
+ activemodel (7.1.5.2)
72
+ activesupport (= 7.1.5.2)
73
+ activerecord (7.1.5.2)
74
+ activemodel (= 7.1.5.2)
75
+ activesupport (= 7.1.5.2)
76
+ timeout (>= 0.4.0)
77
+ activestorage (7.1.5.2)
78
+ actionpack (= 7.1.5.2)
79
+ activejob (= 7.1.5.2)
80
+ activerecord (= 7.1.5.2)
81
+ activesupport (= 7.1.5.2)
82
+ marcel (~> 1.0)
83
+ activesupport (7.1.5.2)
84
+ base64
85
+ benchmark (>= 0.3)
86
+ bigdecimal
87
+ concurrent-ruby (~> 1.0, >= 1.0.2)
88
+ connection_pool (>= 2.2.5)
89
+ drb
90
+ i18n (>= 1.6, < 2)
91
+ logger (>= 1.4.2)
92
+ minitest (>= 5.1)
93
+ mutex_m
94
+ securerandom (>= 0.3)
95
+ tzinfo (~> 2.0)
96
+ addressable (2.8.7)
97
+ public_suffix (>= 2.0.2, < 7.0)
98
+ appraisal (2.5.0)
99
+ bundler
100
+ rake
101
+ thor (>= 0.14.0)
102
+ arbre (2.2.0)
103
+ activesupport (>= 7.0)
104
+ ast (2.4.3)
105
+ base64 (0.3.0)
106
+ benchmark (0.4.1)
107
+ bigdecimal (3.2.3)
108
+ builder (3.3.0)
109
+ capybara (3.40.0)
110
+ addressable
111
+ matrix
112
+ mini_mime (>= 0.1.3)
113
+ nokogiri (~> 1.11)
114
+ rack (>= 1.6.0)
115
+ rack-test (>= 0.6.3)
116
+ regexp_parser (>= 1.5, < 3.0)
117
+ xpath (~> 3.2)
118
+ capybara-playwright-driver (0.5.7)
119
+ addressable
120
+ capybara
121
+ playwright-ruby-client (>= 1.16.0)
122
+ combustion (1.5.0)
123
+ activesupport (>= 3.0.0)
124
+ railties (>= 3.0.0)
125
+ thor (>= 0.14.6)
126
+ concurrent-ruby (1.3.5)
127
+ connection_pool (2.5.4)
128
+ crass (1.0.6)
129
+ csv (3.3.5)
130
+ database_cleaner-active_record (2.2.2)
131
+ activerecord (>= 5.a)
132
+ database_cleaner-core (~> 2.0)
133
+ database_cleaner-core (2.0.1)
134
+ date (3.4.1)
135
+ diff-lcs (1.6.2)
136
+ docile (1.4.1)
137
+ drb (2.2.3)
138
+ erb (5.0.2)
139
+ erubi (1.13.1)
140
+ formtastic (5.0.0)
141
+ actionpack (>= 6.0.0)
142
+ formtastic_i18n (0.7.0)
143
+ git (1.19.1)
144
+ addressable (~> 2.8)
145
+ rchardet (~> 1.8)
146
+ globalid (1.2.1)
147
+ activesupport (>= 6.1)
148
+ has_scope (0.8.2)
149
+ actionpack (>= 5.2)
150
+ activesupport (>= 5.2)
151
+ i18n (1.14.7)
152
+ concurrent-ruby (~> 1.0)
153
+ inherited_resources (2.1.0)
154
+ actionpack (>= 7.0)
155
+ has_scope (>= 0.6)
156
+ railties (>= 7.0)
157
+ responders (>= 2)
158
+ io-console (0.8.1)
159
+ irb (1.15.2)
160
+ pp (>= 0.6.0)
161
+ rdoc (>= 4.0.0)
162
+ reline (>= 0.4.2)
163
+ json (2.13.2)
164
+ kaminari (1.2.2)
165
+ activesupport (>= 4.1.0)
166
+ kaminari-actionview (= 1.2.2)
167
+ kaminari-activerecord (= 1.2.2)
168
+ kaminari-core (= 1.2.2)
169
+ kaminari-actionview (1.2.2)
170
+ actionview
171
+ kaminari-core (= 1.2.2)
172
+ kaminari-activerecord (1.2.2)
173
+ activerecord
174
+ kaminari-core (= 1.2.2)
175
+ kaminari-core (1.2.2)
176
+ logger (1.7.0)
177
+ loofah (2.24.1)
178
+ crass (~> 1.0.2)
179
+ nokogiri (>= 1.12.0)
180
+ mail (2.8.1)
181
+ mini_mime (>= 0.1.1)
182
+ net-imap
183
+ net-pop
184
+ net-smtp
185
+ marcel (1.0.4)
186
+ matrix (0.4.3)
187
+ mime-types (3.7.0)
188
+ logger
189
+ mime-types-data (~> 3.2025, >= 3.2025.0507)
190
+ mime-types-data (3.2025.0902)
191
+ mini_mime (1.1.5)
192
+ minitest (5.25.5)
193
+ mutex_m (0.3.0)
194
+ net-imap (0.5.10)
195
+ date
196
+ net-protocol
197
+ net-pop (0.1.2)
198
+ net-protocol
199
+ net-protocol (0.2.2)
200
+ timeout
201
+ net-smtp (0.5.1)
202
+ net-protocol
203
+ nio4r (2.7.4)
204
+ nokogiri (1.18.9-x86_64-linux-gnu)
205
+ racc (~> 1.4)
206
+ parallel (1.27.0)
207
+ parser (3.3.9.0)
208
+ ast (~> 2.4.1)
209
+ racc
210
+ playwright-ruby-client (1.55.0)
211
+ concurrent-ruby (>= 1.1.6)
212
+ mime-types (>= 3.0)
213
+ pp (0.6.2)
214
+ prettyprint
215
+ prettyprint (0.2.0)
216
+ prism (1.4.0)
217
+ propshaft (1.2.1)
218
+ actionpack (>= 7.0.0)
219
+ activesupport (>= 7.0.0)
220
+ rack
221
+ psych (5.2.6)
222
+ date
223
+ stringio
224
+ public_suffix (6.0.2)
225
+ puma (6.6.1)
226
+ nio4r (~> 2.0)
227
+ racc (1.8.1)
228
+ rack (3.2.1)
229
+ rack-session (2.1.1)
230
+ base64 (>= 0.1.0)
231
+ rack (>= 3.0.0)
232
+ rack-test (2.2.0)
233
+ rack (>= 1.3)
234
+ rackup (2.2.1)
235
+ rack (>= 3)
236
+ rails (7.1.5.2)
237
+ actioncable (= 7.1.5.2)
238
+ actionmailbox (= 7.1.5.2)
239
+ actionmailer (= 7.1.5.2)
240
+ actionpack (= 7.1.5.2)
241
+ actiontext (= 7.1.5.2)
242
+ actionview (= 7.1.5.2)
243
+ activejob (= 7.1.5.2)
244
+ activemodel (= 7.1.5.2)
245
+ activerecord (= 7.1.5.2)
246
+ activestorage (= 7.1.5.2)
247
+ activesupport (= 7.1.5.2)
248
+ bundler (>= 1.15.0)
249
+ railties (= 7.1.5.2)
250
+ rails-dom-testing (2.3.0)
251
+ activesupport (>= 5.0.0)
252
+ minitest
253
+ nokogiri (>= 1.6)
254
+ rails-html-sanitizer (1.6.2)
255
+ loofah (~> 2.21)
256
+ 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)
257
+ railties (7.1.5.2)
258
+ actionpack (= 7.1.5.2)
259
+ activesupport (= 7.1.5.2)
260
+ irb
261
+ rackup (>= 1.0.0)
262
+ rake (>= 12.2)
263
+ thor (~> 1.0, >= 1.2.2)
264
+ zeitwerk (~> 2.6)
265
+ rainbow (2.2.2)
266
+ rake
267
+ rake (13.3.0)
268
+ ransack (4.3.0)
269
+ activerecord (>= 6.1.5)
270
+ activesupport (>= 6.1.5)
271
+ i18n
272
+ rchardet (1.9.0)
273
+ rdoc (6.14.2)
274
+ erb
275
+ psych (>= 4.0.0)
276
+ regexp_parser (2.11.2)
277
+ reline (0.6.2)
278
+ io-console (~> 0.5)
279
+ responders (3.1.1)
280
+ actionpack (>= 5.2)
281
+ railties (>= 5.2)
282
+ rexml (3.4.2)
283
+ rspec-core (3.13.5)
284
+ rspec-support (~> 3.13.0)
285
+ rspec-expectations (3.13.5)
286
+ diff-lcs (>= 1.2.0, < 2.0)
287
+ rspec-support (~> 3.13.0)
288
+ rspec-mocks (3.13.5)
289
+ diff-lcs (>= 1.2.0, < 2.0)
290
+ rspec-support (~> 3.13.0)
291
+ rspec-rails (6.1.5)
292
+ actionpack (>= 6.1)
293
+ activesupport (>= 6.1)
294
+ railties (>= 6.1)
295
+ rspec-core (~> 3.13)
296
+ rspec-expectations (~> 3.13)
297
+ rspec-mocks (~> 3.13)
298
+ rspec-support (~> 3.13)
299
+ rspec-support (3.13.5)
300
+ rspec_junit_formatter (0.6.0)
301
+ rspec-core (>= 2, < 4, != 2.12.0)
302
+ rubocop (1.50.2)
303
+ json (~> 2.3)
304
+ parallel (~> 1.10)
305
+ parser (>= 3.2.0.0)
306
+ rainbow (>= 2.2.2, < 4.0)
307
+ regexp_parser (>= 1.8, < 3.0)
308
+ rexml (>= 3.2.5, < 4.0)
309
+ rubocop-ast (>= 1.28.0, < 2.0)
310
+ ruby-progressbar (~> 1.7)
311
+ unicode-display_width (>= 2.4.0, < 3.0)
312
+ rubocop-ast (1.46.0)
313
+ parser (>= 3.3.7.2)
314
+ prism (~> 1.4)
315
+ ruby-progressbar (1.13.0)
316
+ securerandom (0.4.1)
317
+ semmy (1.2.0)
318
+ git (~> 1.3)
319
+ rainbow (~> 2.1)
320
+ unindent (~> 1.0)
321
+ simplecov (0.22.0)
322
+ docile (~> 1.1)
323
+ simplecov-html (~> 0.11)
324
+ simplecov_json_formatter (~> 0.1)
325
+ simplecov-cobertura (3.1.0)
326
+ rexml
327
+ simplecov (~> 0.19)
328
+ simplecov-html (0.13.2)
329
+ simplecov_json_formatter (0.1.4)
330
+ sqlite3 (2.7.3-x86_64-linux-gnu)
331
+ stringio (3.1.7)
332
+ thor (1.4.0)
333
+ timeout (0.4.3)
334
+ tzinfo (2.0.6)
335
+ concurrent-ruby (~> 1.0)
336
+ unicode-display_width (2.6.0)
337
+ unindent (1.0)
338
+ websocket-driver (0.8.0)
339
+ base64
340
+ websocket-extensions (>= 0.1.0)
341
+ websocket-extensions (0.1.5)
342
+ xpath (3.2.0)
343
+ nokogiri (~> 1.8)
344
+ zeitwerk (2.7.3)
345
+
346
+ PLATFORMS
347
+ x86_64-linux
348
+
349
+ DEPENDENCIES
350
+ activeadmin (= 4.0.0.beta16)
351
+ appraisal (~> 2.2)
352
+ bundler (>= 1.5, < 3)
353
+ capybara (~> 3.39)
354
+ capybara-playwright-driver (~> 0.5)
355
+ combustion (~> 1.5)
356
+ database_cleaner-active_record (~> 2.1)
357
+ propshaft
358
+ puma (~> 6.0)
359
+ rails (~> 7.1)
360
+ rake
361
+ rs-activeadmin-searchable_select!
362
+ rspec-rails (~> 6.0)
363
+ rspec_junit_formatter
364
+ rubocop (~> 1.50.0)
365
+ semmy (~> 1.0)
366
+ simplecov
367
+ simplecov-cobertura
368
+ sqlite3 (~> 2.1)
369
+
370
+ BUNDLED WITH
371
+ 2.4.10
@@ -0,0 +1,11 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activeadmin", "4.0.0.beta16"
6
+ gem "rspec_junit_formatter", require: false
7
+ gem "simplecov", require: false
8
+ gem "simplecov-cobertura", require: false
9
+ gem "rails", "~> 8.0"
10
+
11
+ gemspec path: "../"