steel_wheel 0.6.0 → 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 +148 -108
  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: e208342260c8707a41b8f87529f9aa24e35e446572dfbc24ad48adc69309fcbc
4
- data.tar.gz: 0d275d64e89a1a30db07e8b42a6a7d9f1913f99fca08f0d3a0f5778a003c8a21
3
+ metadata.gz: 97743adea6bbab71134f9a054bc620921c0791816c18b730d33f33f8cbe858ce
4
+ data.tar.gz: 3cdd1575f2d13535581b6799ff713eaab0b6f6c5b90c6c917586beac05ea17a0
5
5
  SHA512:
6
- metadata.gz: 345e4ea37ec4748e76813c5840c8c9815db3bcc11774712fb1bf32112595c4a254b1961e1eafad73f3ecdcf0bf9e7894ae1db7d6182db9552b71ae251fd8ad0e
7
- data.tar.gz: 8e9dc28dccd1f97dd552c119442ce20aa8b36458c33a9401ea31bd45b5067456e89ffcce8dddf84d7c2a66b084f332ebf72a6cd4f9b25c78fb5a8e65cffe87f5
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,150 +1,189 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- steel_wheel (0.6.0)
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.2)
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
- minitest (5.19.0)
75
- nina (0.1.2)
76
- toritori (= 0.1.0)
77
- nokogiri (1.15.3-arm64-darwin)
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)
84
+ mini_portile2 (~> 2.8.2)
78
85
  racc (~> 1.4)
79
- parallel (1.23.0)
80
- 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)
81
90
  ast (~> 2.4.1)
82
91
  racc
83
- 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)
84
99
  coderay (~> 1.1)
85
100
  method_source (~> 1.0)
86
- racc (1.7.0)
87
- rack (2.2.7)
88
- 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)
89
110
  rack (>= 1.3)
90
- rails-dom-testing (2.1.1)
111
+ rackup (2.2.1)
112
+ rack (>= 3)
113
+ rails-dom-testing (2.3.0)
91
114
  activesupport (>= 5.0.0)
92
115
  minitest
93
116
  nokogiri (>= 1.6)
94
- rails-html-sanitizer (1.6.0)
117
+ rails-html-sanitizer (1.6.2)
95
118
  loofah (~> 2.21)
96
- nokogiri (~> 1.14)
97
- railties (7.0.6)
98
- actionpack (= 7.0.6)
99
- activesupport (= 7.0.6)
100
- 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)
101
125
  rake (>= 12.2)
102
- thor (~> 1.0)
103
- zeitwerk (~> 2.5)
126
+ thor (~> 1.0, >= 1.2.2)
127
+ tsort (>= 0.2)
128
+ zeitwerk (~> 2.6)
104
129
  rainbow (3.1.1)
105
- rake (13.0.6)
106
- regexp_parser (2.8.1)
107
- rexml (3.2.5)
108
- rspec (3.12.0)
109
- rspec-core (~> 3.12.0)
110
- rspec-expectations (~> 3.12.0)
111
- rspec-mocks (~> 3.12.0)
112
- rspec-core (3.12.2)
113
- rspec-support (~> 3.12.0)
114
- 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)
115
145
  diff-lcs (>= 1.2.0, < 2.0)
116
- rspec-support (~> 3.12.0)
117
- rspec-mocks (3.12.5)
146
+ rspec-support (~> 3.13.0)
147
+ rspec-mocks (3.13.5)
118
148
  diff-lcs (>= 1.2.0, < 2.0)
119
- rspec-support (~> 3.12.0)
120
- rspec-support (3.12.0)
149
+ rspec-support (~> 3.13.0)
150
+ rspec-support (3.13.4)
121
151
  rspec_vars_helper (0.1.0)
122
152
  rspec (>= 2.4)
123
- rubocop (1.52.1)
153
+ rubocop (1.79.0)
124
154
  json (~> 2.3)
155
+ language_server-protocol (~> 3.17.0.2)
156
+ lint_roller (~> 1.1.0)
125
157
  parallel (~> 1.10)
126
- parser (>= 3.2.2.3)
158
+ parser (>= 3.3.0.2)
127
159
  rainbow (>= 2.2.2, < 4.0)
128
- regexp_parser (>= 1.8, < 3.0)
129
- rexml (>= 3.2.5, < 4.0)
130
- rubocop-ast (>= 1.28.0, < 2.0)
160
+ regexp_parser (>= 2.9.3, < 3.0)
161
+ rubocop-ast (>= 1.46.0, < 2.0)
131
162
  ruby-progressbar (~> 1.7)
132
- unicode-display_width (>= 2.4.0, < 3.0)
133
- rubocop-ast (1.29.0)
134
- 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)
135
168
  ruby-progressbar (1.13.0)
136
- ruby2_keywords (0.0.5)
137
- simplecov (0.17.0)
169
+ securerandom (0.4.1)
170
+ simplecov (0.22.0)
138
171
  docile (~> 1.1)
139
- json (>= 1.8, < 3)
140
- simplecov-html (~> 0.10.0)
141
- simplecov-html (0.10.2)
142
- thor (1.2.2)
143
- toritori (0.1.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)
144
179
  tzinfo (2.0.6)
145
180
  concurrent-ruby (~> 1.0)
146
- unicode-display_width (2.4.2)
147
- 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)
148
187
 
149
188
  PLATFORMS
150
189
  arm64-darwin
@@ -158,8 +197,9 @@ DEPENDENCIES
158
197
  rspec (~> 3.0)
159
198
  rspec_vars_helper (~> 0.1)
160
199
  rubocop
161
- simplecov (= 0.17)
200
+ simplecov (~> 0.22)
201
+ simplecov_json_formatter
162
202
  steel_wheel!
163
203
 
164
204
  BUNDLED WITH
165
- 2.2.22
205
+ 2.3.7