steel_wheel 0.6.1 → 0.7.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.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/main.yml +39 -0
  3. data/.qlty/.gitignore +7 -0
  4. data/.qlty/qlty.toml +82 -0
  5. data/.ruby-version +1 -1
  6. data/Gemfile +2 -1
  7. data/Gemfile.lock +147 -109
  8. data/README.md +627 -224
  9. data/lib/generators/steel_wheel/application_handler/templates/handler_template.rb +4 -0
  10. data/lib/generators/steel_wheel/form/USAGE +8 -0
  11. data/lib/generators/steel_wheel/form/form_generator.rb +16 -0
  12. data/lib/generators/steel_wheel/form/templates/form_template.rb +3 -0
  13. data/lib/generators/steel_wheel/handler/templates/handler_template.rb +5 -16
  14. data/lib/generators/steel_wheel/scaffold_controller/USAGE +14 -0
  15. data/lib/generators/steel_wheel/scaffold_controller/scaffold_controller_generator.rb +100 -0
  16. data/lib/generators/steel_wheel/scaffold_controller/templates/controller.rb +65 -0
  17. data/lib/generators/steel_wheel/scaffold_controller/templates/create.rb +23 -0
  18. data/lib/generators/steel_wheel/scaffold_controller/templates/form.tt +12 -0
  19. data/lib/generators/steel_wheel/scaffold_controller/templates/index.rb +17 -0
  20. data/lib/generators/steel_wheel/scaffold_controller/templates/model_form.rb +32 -0
  21. data/lib/generators/steel_wheel/scaffold_controller/templates/search_form.rb +31 -0
  22. data/lib/generators/steel_wheel/scaffold_controller/templates/update.rb +31 -0
  23. data/lib/steel_wheel/callbacks.rb +34 -0
  24. data/lib/steel_wheel/components.rb +54 -0
  25. data/lib/steel_wheel/filters.rb +36 -0
  26. data/lib/steel_wheel/handler.rb +67 -68
  27. data/lib/steel_wheel/params.rb +5 -1
  28. data/lib/steel_wheel/preconditions.rb +36 -0
  29. data/lib/steel_wheel/query/dependency_validator.rb +14 -0
  30. data/lib/steel_wheel/query/exists_validator.rb +15 -0
  31. data/lib/steel_wheel/query/verify_validator.rb +30 -0
  32. data/lib/steel_wheel/railtie.rb +50 -0
  33. data/lib/steel_wheel/shortcuts.rb +28 -0
  34. data/lib/steel_wheel/version.rb +1 -1
  35. data/lib/steel_wheel.rb +35 -6
  36. data/steel_wheel.gemspec +4 -4
  37. metadata +38 -30
  38. data/.github/workflows/ruby.yml +0 -43
  39. data/lib/generators/steel_wheel/command/USAGE +0 -8
  40. data/lib/generators/steel_wheel/command/command_generator.rb +0 -16
  41. data/lib/generators/steel_wheel/command/templates/command_template.rb +0 -5
  42. data/lib/generators/steel_wheel/params/USAGE +0 -8
  43. data/lib/generators/steel_wheel/params/params_generator.rb +0 -16
  44. data/lib/generators/steel_wheel/params/templates/params_template.rb +0 -5
  45. data/lib/generators/steel_wheel/query/USAGE +0 -8
  46. data/lib/generators/steel_wheel/query/query_generator.rb +0 -16
  47. data/lib/generators/steel_wheel/query/templates/query_template.rb +0 -5
  48. data/lib/steel_wheel/command.rb +0 -24
  49. data/lib/steel_wheel/query.rb +0 -20
  50. data/lib/steel_wheel/response.rb +0 -34
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7c475cf5e4bb237821ecace0f94191113d56c854da3c7cda191dbdd135a3155e
4
- data.tar.gz: 60a2430416be057235acf6f6d7db98b38ca8f9b5ee8a878efa92f73e7e262800
3
+ metadata.gz: 97743adea6bbab71134f9a054bc620921c0791816c18b730d33f33f8cbe858ce
4
+ data.tar.gz: 3cdd1575f2d13535581b6799ff713eaab0b6f6c5b90c6c917586beac05ea17a0
5
5
  SHA512:
6
- metadata.gz: cc5fb95db4646d2fc96597484576ab61c3e20602c08932c6903e926cb8b2079abb959775d1f15ae0f16fb7f28024eabe7d84e82fbb21518090d4e3a7ad6ba631
7
- data.tar.gz: 5cbbfef1bf7e09c6a4de2955f129bc3c8818432bd7c587f5eabac7c57703310acce09fcbaa8c2bd4ae6b2add56ba9be88c379cfbce4ff715c4bce5f926173288
6
+ metadata.gz: 74f1564ac63d3e4e6cdf41c47396fdcc68e4b5b6e8c9b1ef7aa249454b7ba9b86b3791010d7568108965cb2193b6614fbf4126ad5cbc6432fc1a1bcb44bfcfa7
7
+ data.tar.gz: a520494b4cb761251a38935627b64b7ee8d9be00c427c53be3e8cf71b4e5083236b012e4ec8e5842c4c428a23b2207e7bc7fc781852f264560bea26c747a1a58
@@ -0,0 +1,39 @@
1
+ name: Ruby
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
7
+
8
+ pull_request:
9
+ workflow_call:
10
+ secrets:
11
+ QLTY_COVERAGE_TOKEN:
12
+ required: true
13
+
14
+ jobs:
15
+ build:
16
+ runs-on: ubuntu-latest
17
+ name: Ruby ${{ matrix.ruby }}
18
+ strategy:
19
+ matrix:
20
+ ruby:
21
+ - '3.4'
22
+
23
+ steps:
24
+ - uses: actions/checkout@v4
25
+ with:
26
+ persist-credentials: false
27
+ - name: Set up Ruby
28
+ uses: ruby/setup-ruby@v1
29
+ with:
30
+ ruby-version: ${{ matrix.ruby }}
31
+ bundler-cache: true
32
+ - name: Run the default task
33
+ run: bundle exec rspec --require spec_helper
34
+ - name: Upload coverage to QLty
35
+ uses: qltysh/qlty-action/coverage@v2
36
+ with:
37
+ token: ${{ secrets.QLTY_COVERAGE_TOKEN }}
38
+ files: coverage/coverage.json
39
+ format: simplecov
data/.qlty/.gitignore ADDED
@@ -0,0 +1,7 @@
1
+ *
2
+ !configs
3
+ !configs/**
4
+ !hooks
5
+ !hooks/**
6
+ !qlty.toml
7
+ !.gitignore
data/.qlty/qlty.toml ADDED
@@ -0,0 +1,82 @@
1
+ # This file was automatically generated by `qlty init`.
2
+ # You can modify it to suit your needs.
3
+ # We recommend you to commit this file to your repository.
4
+ #
5
+ # This configuration is used by both Qlty CLI and Qlty Cloud.
6
+ #
7
+ # Qlty CLI -- Code quality toolkit for developers
8
+ # Qlty Cloud -- Fully automated Code Health Platform
9
+ #
10
+ # Try Qlty Cloud: https://qlty.sh
11
+ #
12
+ # For a guide to configuration, visit https://qlty.sh/d/config
13
+ # Or for a full reference, visit https://qlty.sh/d/qlty-toml
14
+ config_version = "0"
15
+
16
+ exclude_patterns = [
17
+ "*_min.*",
18
+ "*-min.*",
19
+ "*.min.*",
20
+ "**/.yarn/**",
21
+ "**/*.d.ts",
22
+ "**/assets/**",
23
+ "**/bower_components/**",
24
+ "**/build/**",
25
+ "**/cache/**",
26
+ "**/config/**",
27
+ "**/db/**",
28
+ "**/deps/**",
29
+ "**/dist/**",
30
+ "**/extern/**",
31
+ "**/external/**",
32
+ "**/generated/**",
33
+ "**/Godeps/**",
34
+ "**/gradlew/**",
35
+ "**/mvnw/**",
36
+ "**/node_modules/**",
37
+ "**/protos/**",
38
+ "**/seed/**",
39
+ "**/target/**",
40
+ "**/templates/**",
41
+ "**/testdata/**",
42
+ "**/vendor/**", "lib/generators",
43
+ ]
44
+
45
+ test_patterns = [
46
+ "**/test/**",
47
+ "**/spec/**",
48
+ "**/*.test.*",
49
+ "**/*.spec.*",
50
+ "**/*_test.*",
51
+ "**/*_spec.*",
52
+ "**/test_*.*",
53
+ "**/spec_*.*",
54
+ ]
55
+
56
+ [smells]
57
+ mode = "comment"
58
+
59
+ [smells.boolean_logic]
60
+ threshold = 4
61
+
62
+ [smells.file_complexity]
63
+ threshold = 55
64
+
65
+ [smells.return_statements]
66
+ threshold = 4
67
+
68
+ [smells.nested_control_flow]
69
+ threshold = 4
70
+
71
+ [smells.function_parameters]
72
+ threshold = 4
73
+
74
+ [smells.function_complexity]
75
+ threshold = 5
76
+
77
+ [smells.duplication]
78
+ threshold = 22
79
+
80
+ [[source]]
81
+ name = "default"
82
+ default = true
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.0.2
1
+ 3.4.1
data/Gemfile CHANGED
@@ -13,4 +13,5 @@ gem 'rake', '>= 12.3.3'
13
13
  gem 'rspec', '~> 3.0'
14
14
  gem 'rspec_vars_helper', '~> 0.1'
15
15
  gem 'rubocop'
16
- gem 'simplecov', '0.17'
16
+ gem 'simplecov', '~> 0.22'
17
+ gem 'simplecov_json_formatter'
data/Gemfile.lock CHANGED
@@ -1,152 +1,189 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- steel_wheel (0.6.1)
5
- easy_params (~> 0.3)
4
+ steel_wheel (0.7.0)
5
+ action_form (~> 0.2)
6
+ easy_params (~> 0.7)
6
7
  memery (~> 1)
7
- nina (~> 0.1.3)
8
- railties (>= 3.2, < 8)
8
+ railties (>= 3.2, < 9)
9
9
 
10
10
  GEM
11
11
  remote: https://rubygems.org/
12
12
  specs:
13
- actionpack (7.0.6)
14
- actionview (= 7.0.6)
15
- activesupport (= 7.0.6)
16
- rack (~> 2.0, >= 2.2.4)
13
+ action_form (0.2.0)
14
+ easy_params (~> 0.7)
15
+ phlex (>= 2)
16
+ railties (>= 6.0.0)
17
+ actionpack (8.0.3)
18
+ actionview (= 8.0.3)
19
+ activesupport (= 8.0.3)
20
+ nokogiri (>= 1.8.5)
21
+ rack (>= 2.2.4)
22
+ rack-session (>= 1.0.1)
17
23
  rack-test (>= 0.6.3)
18
- rails-dom-testing (~> 2.0)
19
- rails-html-sanitizer (~> 1.0, >= 1.2.0)
20
- actionview (7.0.6)
21
- activesupport (= 7.0.6)
24
+ rails-dom-testing (~> 2.2)
25
+ rails-html-sanitizer (~> 1.6)
26
+ useragent (~> 0.16)
27
+ actionview (8.0.3)
28
+ activesupport (= 8.0.3)
22
29
  builder (~> 3.1)
23
- erubi (~> 1.4)
24
- rails-dom-testing (~> 2.0)
25
- rails-html-sanitizer (~> 1.1, >= 1.2.0)
26
- activemodel (7.0.6)
27
- activesupport (= 7.0.6)
28
- activesupport (7.0.6)
29
- concurrent-ruby (~> 1.0, >= 1.0.2)
30
+ erubi (~> 1.11)
31
+ rails-dom-testing (~> 2.2)
32
+ rails-html-sanitizer (~> 1.6)
33
+ activemodel (8.0.3)
34
+ activesupport (= 8.0.3)
35
+ activesupport (8.0.3)
36
+ base64
37
+ benchmark (>= 0.3)
38
+ bigdecimal
39
+ concurrent-ruby (~> 1.0, >= 1.3.1)
40
+ connection_pool (>= 2.2.5)
41
+ drb
30
42
  i18n (>= 1.6, < 2)
43
+ logger (>= 1.4.2)
31
44
  minitest (>= 5.1)
32
- tzinfo (~> 2.0)
33
- ast (2.4.2)
34
- builder (3.2.4)
45
+ securerandom (>= 0.3)
46
+ tzinfo (~> 2.0, >= 2.0.5)
47
+ uri (>= 0.13.1)
48
+ ast (2.4.3)
49
+ base64 (0.3.0)
50
+ benchmark (0.4.1)
51
+ bigdecimal (3.2.3)
52
+ builder (3.3.0)
35
53
  coderay (1.1.3)
36
- concurrent-ruby (1.2.2)
54
+ concurrent-ruby (1.3.5)
55
+ connection_pool (2.5.4)
37
56
  crass (1.0.6)
38
- diff-lcs (1.5.0)
39
- docile (1.4.0)
40
- dry-core (1.0.0)
57
+ date (3.4.1)
58
+ diff-lcs (1.6.2)
59
+ docile (1.4.1)
60
+ drb (2.2.3)
61
+ easy_params (0.7.0)
62
+ activemodel (>= 3.2)
63
+ erb (5.1.1)
64
+ erubi (1.13.1)
65
+ i18n (1.14.7)
41
66
  concurrent-ruby (~> 1.0)
42
- zeitwerk (~> 2.6)
43
- dry-inflector (1.0.0)
44
- dry-logic (1.5.0)
45
- concurrent-ruby (~> 1.0)
46
- dry-core (~> 1.0, < 2)
47
- zeitwerk (~> 2.6)
48
- dry-struct (1.6.0)
49
- dry-core (~> 1.0, < 2)
50
- dry-types (>= 1.7, < 2)
51
- ice_nine (~> 0.11)
52
- zeitwerk (~> 2.6)
53
- dry-types (1.7.1)
54
- concurrent-ruby (~> 1.0)
55
- dry-core (~> 1.0)
56
- dry-inflector (~> 1.0)
57
- dry-logic (~> 1.4)
58
- zeitwerk (~> 2.6)
59
- easy_params (0.3.1)
60
- activemodel (>= 3.2, < 8)
61
- dry-struct (~> 1.4)
62
- dry-types (~> 1.5)
63
- erubi (1.12.0)
64
- i18n (1.14.1)
65
- concurrent-ruby (~> 1.0)
66
- ice_nine (0.11.2)
67
- json (2.6.3)
68
- loofah (2.21.3)
67
+ io-console (0.8.1)
68
+ irb (1.15.2)
69
+ pp (>= 0.6.0)
70
+ rdoc (>= 4.0.0)
71
+ reline (>= 0.4.2)
72
+ json (2.13.1)
73
+ language_server-protocol (3.17.0.5)
74
+ lint_roller (1.1.0)
75
+ logger (1.7.0)
76
+ loofah (2.24.1)
69
77
  crass (~> 1.0.2)
70
78
  nokogiri (>= 1.12.0)
71
- memery (1.5.0)
72
- ruby2_keywords (~> 0.0.2)
73
- method_source (1.0.0)
74
- mini_portile2 (2.8.4)
75
- minitest (5.19.0)
76
- nina (0.1.3)
77
- toritori (= 0.2.0)
78
- nokogiri (1.15.3)
79
+ memery (1.8.0)
80
+ method_source (1.1.0)
81
+ mini_portile2 (2.8.9)
82
+ minitest (5.25.5)
83
+ nokogiri (1.18.1)
79
84
  mini_portile2 (~> 2.8.2)
80
85
  racc (~> 1.4)
81
- parallel (1.23.0)
82
- parser (3.2.2.3)
86
+ nokogiri (1.18.1-arm64-darwin)
87
+ racc (~> 1.4)
88
+ parallel (1.27.0)
89
+ parser (3.3.9.0)
83
90
  ast (~> 2.4.1)
84
91
  racc
85
- pry (0.14.2)
92
+ phlex (2.3.1)
93
+ zeitwerk (~> 2.7)
94
+ pp (0.6.3)
95
+ prettyprint
96
+ prettyprint (0.2.0)
97
+ prism (1.4.0)
98
+ pry (0.15.2)
86
99
  coderay (~> 1.1)
87
100
  method_source (~> 1.0)
88
- racc (1.7.0)
89
- rack (2.2.7)
90
- rack-test (2.1.0)
101
+ psych (5.2.6)
102
+ date
103
+ stringio
104
+ racc (1.8.1)
105
+ rack (3.2.1)
106
+ rack-session (2.1.1)
107
+ base64 (>= 0.1.0)
108
+ rack (>= 3.0.0)
109
+ rack-test (2.2.0)
91
110
  rack (>= 1.3)
92
- rails-dom-testing (2.1.1)
111
+ rackup (2.2.1)
112
+ rack (>= 3)
113
+ rails-dom-testing (2.3.0)
93
114
  activesupport (>= 5.0.0)
94
115
  minitest
95
116
  nokogiri (>= 1.6)
96
- rails-html-sanitizer (1.6.0)
117
+ rails-html-sanitizer (1.6.2)
97
118
  loofah (~> 2.21)
98
- nokogiri (~> 1.14)
99
- railties (7.0.6)
100
- actionpack (= 7.0.6)
101
- activesupport (= 7.0.6)
102
- method_source
119
+ 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)
120
+ railties (8.0.3)
121
+ actionpack (= 8.0.3)
122
+ activesupport (= 8.0.3)
123
+ irb (~> 1.13)
124
+ rackup (>= 1.0.0)
103
125
  rake (>= 12.2)
104
- thor (~> 1.0)
105
- zeitwerk (~> 2.5)
126
+ thor (~> 1.0, >= 1.2.2)
127
+ tsort (>= 0.2)
128
+ zeitwerk (~> 2.6)
106
129
  rainbow (3.1.1)
107
- rake (13.0.6)
108
- regexp_parser (2.8.1)
109
- rexml (3.2.5)
110
- rspec (3.12.0)
111
- rspec-core (~> 3.12.0)
112
- rspec-expectations (~> 3.12.0)
113
- rspec-mocks (~> 3.12.0)
114
- rspec-core (3.12.2)
115
- rspec-support (~> 3.12.0)
116
- rspec-expectations (3.12.3)
130
+ rake (13.3.0)
131
+ rdoc (6.15.0)
132
+ erb
133
+ psych (>= 4.0.0)
134
+ tsort
135
+ regexp_parser (2.10.0)
136
+ reline (0.6.2)
137
+ io-console (~> 0.5)
138
+ rspec (3.13.1)
139
+ rspec-core (~> 3.13.0)
140
+ rspec-expectations (~> 3.13.0)
141
+ rspec-mocks (~> 3.13.0)
142
+ rspec-core (3.13.5)
143
+ rspec-support (~> 3.13.0)
144
+ rspec-expectations (3.13.5)
117
145
  diff-lcs (>= 1.2.0, < 2.0)
118
- rspec-support (~> 3.12.0)
119
- rspec-mocks (3.12.5)
146
+ rspec-support (~> 3.13.0)
147
+ rspec-mocks (3.13.5)
120
148
  diff-lcs (>= 1.2.0, < 2.0)
121
- rspec-support (~> 3.12.0)
122
- rspec-support (3.12.0)
149
+ rspec-support (~> 3.13.0)
150
+ rspec-support (3.13.4)
123
151
  rspec_vars_helper (0.1.0)
124
152
  rspec (>= 2.4)
125
- rubocop (1.52.1)
153
+ rubocop (1.79.0)
126
154
  json (~> 2.3)
155
+ language_server-protocol (~> 3.17.0.2)
156
+ lint_roller (~> 1.1.0)
127
157
  parallel (~> 1.10)
128
- parser (>= 3.2.2.3)
158
+ parser (>= 3.3.0.2)
129
159
  rainbow (>= 2.2.2, < 4.0)
130
- regexp_parser (>= 1.8, < 3.0)
131
- rexml (>= 3.2.5, < 4.0)
132
- rubocop-ast (>= 1.28.0, < 2.0)
160
+ regexp_parser (>= 2.9.3, < 3.0)
161
+ rubocop-ast (>= 1.46.0, < 2.0)
133
162
  ruby-progressbar (~> 1.7)
134
- unicode-display_width (>= 2.4.0, < 3.0)
135
- rubocop-ast (1.29.0)
136
- parser (>= 3.2.1.0)
163
+ tsort (>= 0.2.0)
164
+ unicode-display_width (>= 2.4.0, < 4.0)
165
+ rubocop-ast (1.46.0)
166
+ parser (>= 3.3.7.2)
167
+ prism (~> 1.4)
137
168
  ruby-progressbar (1.13.0)
138
- ruby2_keywords (0.0.5)
139
- simplecov (0.17.0)
169
+ securerandom (0.4.1)
170
+ simplecov (0.22.0)
140
171
  docile (~> 1.1)
141
- json (>= 1.8, < 3)
142
- simplecov-html (~> 0.10.0)
143
- simplecov-html (0.10.2)
144
- thor (1.2.2)
145
- toritori (0.2.0)
172
+ simplecov-html (~> 0.11)
173
+ simplecov_json_formatter (~> 0.1)
174
+ simplecov-html (0.13.2)
175
+ simplecov_json_formatter (0.1.4)
176
+ stringio (3.1.7)
177
+ thor (1.4.0)
178
+ tsort (0.2.0)
146
179
  tzinfo (2.0.6)
147
180
  concurrent-ruby (~> 1.0)
148
- unicode-display_width (2.4.2)
149
- zeitwerk (2.6.9)
181
+ unicode-display_width (3.1.4)
182
+ unicode-emoji (~> 4.0, >= 4.0.4)
183
+ unicode-emoji (4.0.4)
184
+ uri (1.0.3)
185
+ useragent (0.16.11)
186
+ zeitwerk (2.7.3)
150
187
 
151
188
  PLATFORMS
152
189
  arm64-darwin
@@ -160,8 +197,9 @@ DEPENDENCIES
160
197
  rspec (~> 3.0)
161
198
  rspec_vars_helper (~> 0.1)
162
199
  rubocop
163
- simplecov (= 0.17)
200
+ simplecov (~> 0.22)
201
+ simplecov_json_formatter
164
202
  steel_wheel!
165
203
 
166
204
  BUNDLED WITH
167
- 2.2.22
205
+ 2.3.7