steel_wheel 0.6.1 → 0.8.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 (51) 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 +145 -109
  8. data/README.md +627 -224
  9. data/lib/generators/steel_wheel/application_handler/templates/handler_template.rb +5 -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 +72 -0
  25. data/lib/steel_wheel/composition.rb +47 -0
  26. data/lib/steel_wheel/filters.rb +36 -0
  27. data/lib/steel_wheel/handler.rb +67 -67
  28. data/lib/steel_wheel/params.rb +5 -1
  29. data/lib/steel_wheel/preconditions.rb +36 -0
  30. data/lib/steel_wheel/query/dependency_validator.rb +14 -0
  31. data/lib/steel_wheel/query/exists_validator.rb +15 -0
  32. data/lib/steel_wheel/query/verify_validator.rb +30 -0
  33. data/lib/steel_wheel/railtie.rb +51 -0
  34. data/lib/steel_wheel/shortcuts.rb +28 -0
  35. data/lib/steel_wheel/version.rb +1 -1
  36. data/lib/steel_wheel.rb +36 -6
  37. data/steel_wheel.gemspec +4 -4
  38. metadata +39 -30
  39. data/.github/workflows/ruby.yml +0 -43
  40. data/lib/generators/steel_wheel/command/USAGE +0 -8
  41. data/lib/generators/steel_wheel/command/command_generator.rb +0 -16
  42. data/lib/generators/steel_wheel/command/templates/command_template.rb +0 -5
  43. data/lib/generators/steel_wheel/params/USAGE +0 -8
  44. data/lib/generators/steel_wheel/params/params_generator.rb +0 -16
  45. data/lib/generators/steel_wheel/params/templates/params_template.rb +0 -5
  46. data/lib/generators/steel_wheel/query/USAGE +0 -8
  47. data/lib/generators/steel_wheel/query/query_generator.rb +0 -16
  48. data/lib/generators/steel_wheel/query/templates/query_template.rb +0 -5
  49. data/lib/steel_wheel/command.rb +0 -24
  50. data/lib/steel_wheel/query.rb +0 -20
  51. 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: 63187c69f05601bdc4504a3b85244d9ecd14c7ed882434ae3c87526f39e57b9a
4
+ data.tar.gz: 5c7734353306c7f214b370a35206cc71f3eb903a1b79b0b3331cba999afca3a0
5
5
  SHA512:
6
- metadata.gz: cc5fb95db4646d2fc96597484576ab61c3e20602c08932c6903e926cb8b2079abb959775d1f15ae0f16fb7f28024eabe7d84e82fbb21518090d4e3a7ad6ba631
7
- data.tar.gz: 5cbbfef1bf7e09c6a4de2955f129bc3c8818432bd7c587f5eabac7c57703310acce09fcbaa8c2bd4ae6b2add56ba9be88c379cfbce4ff715c4bce5f926173288
6
+ metadata.gz: ac0acddfa4074ac236e3f2bc1b2693d6cf58fb99f0da6c06bd8c409c53d625da91fdc384ec629cb7646edd0c82fe3ce4107338156fb068f4574772ca572d97ef
7
+ data.tar.gz: 81f1ff20c703273f06f683e836c6fc5966f5d1ed308f7ab0b45714b05bdae01ea2778116826a4c8cb3ecdbb1b4b9ec2e4db9b98ede03eb403b08a2011e5996ec
@@ -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,187 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- steel_wheel (0.6.1)
5
- easy_params (~> 0.3)
4
+ steel_wheel (0.8.0)
5
+ action_form (~> 0.6.6)
6
+ easy_params (~> 0.9.1)
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.6.6)
14
+ easy_params (~> 0.9.1)
15
+ phlex (>= 2)
16
+ railties (>= 6.0.0)
17
+ actionpack (8.1.1)
18
+ actionview (= 8.1.1)
19
+ activesupport (= 8.1.1)
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.1.1)
28
+ activesupport (= 8.1.1)
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.1.1)
34
+ activesupport (= 8.1.1)
35
+ activesupport (8.1.1)
36
+ base64
37
+ bigdecimal
38
+ concurrent-ruby (~> 1.0, >= 1.3.1)
39
+ connection_pool (>= 2.2.5)
40
+ drb
30
41
  i18n (>= 1.6, < 2)
42
+ json
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
+ bigdecimal (3.3.1)
51
+ builder (3.3.0)
35
52
  coderay (1.1.3)
36
- concurrent-ruby (1.2.2)
53
+ concurrent-ruby (1.3.5)
54
+ connection_pool (2.5.4)
37
55
  crass (1.0.6)
38
- diff-lcs (1.5.0)
39
- docile (1.4.0)
40
- dry-core (1.0.0)
56
+ date (3.5.0)
57
+ diff-lcs (1.6.2)
58
+ docile (1.4.1)
59
+ drb (2.2.3)
60
+ easy_params (0.9.1)
61
+ activemodel (>= 3.2)
62
+ erb (6.0.0)
63
+ erubi (1.13.1)
64
+ i18n (1.14.7)
41
65
  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)
66
+ io-console (0.8.1)
67
+ irb (1.15.3)
68
+ pp (>= 0.6.0)
69
+ rdoc (>= 4.0.0)
70
+ reline (>= 0.4.2)
71
+ json (2.15.2)
72
+ language_server-protocol (3.17.0.5)
73
+ lint_roller (1.1.0)
74
+ logger (1.7.0)
75
+ loofah (2.24.1)
69
76
  crass (~> 1.0.2)
70
77
  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)
78
+ memery (1.8.0)
79
+ method_source (1.1.0)
80
+ mini_portile2 (2.8.9)
81
+ minitest (5.26.1)
82
+ nokogiri (1.18.1)
79
83
  mini_portile2 (~> 2.8.2)
80
84
  racc (~> 1.4)
81
- parallel (1.23.0)
82
- parser (3.2.2.3)
85
+ nokogiri (1.18.1-arm64-darwin)
86
+ racc (~> 1.4)
87
+ parallel (1.27.0)
88
+ parser (3.3.10.0)
83
89
  ast (~> 2.4.1)
84
90
  racc
85
- pry (0.14.2)
91
+ phlex (2.3.1)
92
+ zeitwerk (~> 2.7)
93
+ pp (0.6.3)
94
+ prettyprint
95
+ prettyprint (0.2.0)
96
+ prism (1.6.0)
97
+ pry (0.15.2)
86
98
  coderay (~> 1.1)
87
99
  method_source (~> 1.0)
88
- racc (1.7.0)
89
- rack (2.2.7)
90
- rack-test (2.1.0)
100
+ psych (5.2.6)
101
+ date
102
+ stringio
103
+ racc (1.8.1)
104
+ rack (3.2.4)
105
+ rack-session (2.1.1)
106
+ base64 (>= 0.1.0)
107
+ rack (>= 3.0.0)
108
+ rack-test (2.2.0)
91
109
  rack (>= 1.3)
92
- rails-dom-testing (2.1.1)
110
+ rackup (2.2.1)
111
+ rack (>= 3)
112
+ rails-dom-testing (2.3.0)
93
113
  activesupport (>= 5.0.0)
94
114
  minitest
95
115
  nokogiri (>= 1.6)
96
- rails-html-sanitizer (1.6.0)
116
+ rails-html-sanitizer (1.6.2)
97
117
  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
118
+ 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)
119
+ railties (8.1.1)
120
+ actionpack (= 8.1.1)
121
+ activesupport (= 8.1.1)
122
+ irb (~> 1.13)
123
+ rackup (>= 1.0.0)
103
124
  rake (>= 12.2)
104
- thor (~> 1.0)
105
- zeitwerk (~> 2.5)
125
+ thor (~> 1.0, >= 1.2.2)
126
+ tsort (>= 0.2)
127
+ zeitwerk (~> 2.6)
106
128
  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)
129
+ rake (13.3.1)
130
+ rdoc (6.15.1)
131
+ erb
132
+ psych (>= 4.0.0)
133
+ tsort
134
+ regexp_parser (2.11.3)
135
+ reline (0.6.3)
136
+ io-console (~> 0.5)
137
+ rspec (3.13.2)
138
+ rspec-core (~> 3.13.0)
139
+ rspec-expectations (~> 3.13.0)
140
+ rspec-mocks (~> 3.13.0)
141
+ rspec-core (3.13.6)
142
+ rspec-support (~> 3.13.0)
143
+ rspec-expectations (3.13.5)
117
144
  diff-lcs (>= 1.2.0, < 2.0)
118
- rspec-support (~> 3.12.0)
119
- rspec-mocks (3.12.5)
145
+ rspec-support (~> 3.13.0)
146
+ rspec-mocks (3.13.7)
120
147
  diff-lcs (>= 1.2.0, < 2.0)
121
- rspec-support (~> 3.12.0)
122
- rspec-support (3.12.0)
148
+ rspec-support (~> 3.13.0)
149
+ rspec-support (3.13.6)
123
150
  rspec_vars_helper (0.1.0)
124
151
  rspec (>= 2.4)
125
- rubocop (1.52.1)
152
+ rubocop (1.81.7)
126
153
  json (~> 2.3)
154
+ language_server-protocol (~> 3.17.0.2)
155
+ lint_roller (~> 1.1.0)
127
156
  parallel (~> 1.10)
128
- parser (>= 3.2.2.3)
157
+ parser (>= 3.3.0.2)
129
158
  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)
159
+ regexp_parser (>= 2.9.3, < 3.0)
160
+ rubocop-ast (>= 1.47.1, < 2.0)
133
161
  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)
162
+ unicode-display_width (>= 2.4.0, < 4.0)
163
+ rubocop-ast (1.47.1)
164
+ parser (>= 3.3.7.2)
165
+ prism (~> 1.4)
137
166
  ruby-progressbar (1.13.0)
138
- ruby2_keywords (0.0.5)
139
- simplecov (0.17.0)
167
+ securerandom (0.4.1)
168
+ simplecov (0.22.0)
140
169
  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)
170
+ simplecov-html (~> 0.11)
171
+ simplecov_json_formatter (~> 0.1)
172
+ simplecov-html (0.13.2)
173
+ simplecov_json_formatter (0.1.4)
174
+ stringio (3.1.8)
175
+ thor (1.4.0)
176
+ tsort (0.2.0)
146
177
  tzinfo (2.0.6)
147
178
  concurrent-ruby (~> 1.0)
148
- unicode-display_width (2.4.2)
149
- zeitwerk (2.6.9)
179
+ unicode-display_width (3.2.0)
180
+ unicode-emoji (~> 4.1)
181
+ unicode-emoji (4.1.0)
182
+ uri (1.1.1)
183
+ useragent (0.16.11)
184
+ zeitwerk (2.7.3)
150
185
 
151
186
  PLATFORMS
152
187
  arm64-darwin
@@ -160,8 +195,9 @@ DEPENDENCIES
160
195
  rspec (~> 3.0)
161
196
  rspec_vars_helper (~> 0.1)
162
197
  rubocop
163
- simplecov (= 0.17)
198
+ simplecov (~> 0.22)
199
+ simplecov_json_formatter
164
200
  steel_wheel!
165
201
 
166
202
  BUNDLED WITH
167
- 2.2.22
203
+ 2.3.7