sun-sword 0.0.10 → 0.0.12

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 (56) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +57 -2
  3. data/Gemfile +20 -0
  4. data/Gemfile.lock +252 -0
  5. data/README.md +74 -15
  6. data/Rakefile +6 -10
  7. data/lib/generators/sun_sword/USAGE +22 -3
  8. data/lib/generators/sun_sword/frontend_generator.rb +77 -39
  9. data/lib/generators/sun_sword/frontend_generator_spec.rb +539 -0
  10. data/lib/generators/sun_sword/init_generator.rb +2 -0
  11. data/lib/generators/sun_sword/init_generator_spec.rb +82 -0
  12. data/lib/generators/sun_sword/scaffold_generator.rb +212 -29
  13. data/lib/generators/sun_sword/scaffold_generator_spec.rb +1414 -0
  14. data/lib/generators/sun_sword/templates_frontend/{Procfile.dev → Procfile.dev.tt} +1 -0
  15. data/lib/generators/sun_sword/templates_frontend/bin/{watch → watch.tt} +2 -1
  16. data/lib/generators/sun_sword/templates_frontend/config/{vite.json → vite.json.tt} +2 -1
  17. data/lib/generators/sun_sword/templates_frontend/controllers/application_controller.rb.tt +2 -2
  18. data/lib/generators/sun_sword/templates_frontend/controllers/tests_controller.rb +36 -0
  19. data/lib/generators/sun_sword/templates_frontend/controllers/tests_controller_spec.rb +62 -0
  20. data/lib/generators/sun_sword/templates_frontend/env.development +1 -1
  21. data/lib/generators/sun_sword/templates_frontend/frontend/entrypoints/application.js +2 -2
  22. data/lib/generators/sun_sword/templates_frontend/frontend/pages/tests-stimulus.js +31 -0
  23. data/lib/generators/sun_sword/templates_frontend/frontend/pages/web.js +12 -0
  24. data/lib/generators/sun_sword/templates_frontend/frontend/stylesheets/application.css +1 -3
  25. data/lib/generators/sun_sword/templates_frontend/helpers/application_helper.rb +17 -0
  26. data/lib/generators/sun_sword/templates_frontend/helpers/application_helper_spec.rb +30 -0
  27. data/lib/generators/sun_sword/templates_frontend/package.json.tt +14 -0
  28. data/lib/generators/sun_sword/templates_frontend/views/components/_action_destroy.html.erb.tt +1 -1
  29. data/lib/generators/sun_sword/templates_frontend/views/components/_alert.html.erb.tt +1 -1
  30. data/lib/generators/sun_sword/templates_frontend/views/layouts/application.html.erb.tt +3 -3
  31. data/lib/generators/sun_sword/templates_frontend/views/tests/_frame_content.html.erb +9 -0
  32. data/lib/generators/sun_sword/templates_frontend/views/tests/_log_entry.html.erb +4 -0
  33. data/lib/generators/sun_sword/templates_frontend/views/tests/_updated_content.html.erb +6 -0
  34. data/lib/generators/sun_sword/templates_frontend/views/tests/stimulus.html.erb +45 -0
  35. data/lib/generators/sun_sword/templates_frontend/views/tests/turbo_drive.html.erb +55 -0
  36. data/lib/generators/sun_sword/templates_frontend/views/tests/turbo_frame.html.erb +87 -0
  37. data/lib/generators/sun_sword/templates_frontend/vite.config.ts.tt +1 -1
  38. data/lib/generators/sun_sword/templates_init/config/initializers/sun_sword.rb +1 -0
  39. data/lib/generators/sun_sword/templates_scaffold/controllers/controller.rb.tt +24 -24
  40. data/lib/generators/sun_sword/templates_scaffold/controllers/controller_spec.rb.tt +398 -0
  41. data/lib/generators/sun_sword/templates_scaffold/views/index.html.erb.tt +5 -5
  42. data/lib/generators/sun_sword/templates_scaffold/views/show.html.erb.tt +3 -0
  43. data/lib/generators/tmp/db/structures/test_structure.yaml +42 -0
  44. data/lib/sun-sword.rb +1 -0
  45. data/lib/sun_sword/configuration_spec.rb +77 -0
  46. data/lib/sun_sword/version.rb +1 -1
  47. metadata +177 -29
  48. data/.rspec +0 -3
  49. data/.rubocop.yml +0 -1146
  50. data/lib/generators/sun_sword/templates_frontend/controllers/site_controller.rb +0 -16
  51. data/lib/generators/sun_sword/templates_frontend/db/seeds.rb +0 -3
  52. data/lib/generators/sun_sword/templates_frontend/db/structures/example.yaml.tt +0 -106
  53. data/lib/generators/sun_sword/templates_frontend/frontend/pages/stimulus.js +0 -10
  54. data/lib/generators/sun_sword/templates_frontend/package.json +0 -7
  55. data/lib/generators/sun_sword/templates_frontend/views/site/_comment.html.erb.tt +0 -3
  56. data/lib/generators/sun_sword/templates_frontend/views/site/stimulus.html.erb.tt +0 -26
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe SunSword::Configuration do
4
+ let(:test_class) do
5
+ Class.new do
6
+ extend SunSword::Configuration
7
+ end
8
+ end
9
+
10
+ describe '.setup' do
11
+ it 'yields self to the block' do
12
+ yielded_object = nil
13
+ test_class.setup do |config|
14
+ yielded_object = config
15
+ end
16
+
17
+ expect(yielded_object).to eq(test_class)
18
+ end
19
+
20
+ it 'allows configuration through the block' do
21
+ test_class.setup do |config|
22
+ config.define_setting(:test_setting, 'default_value')
23
+ end
24
+
25
+ expect(test_class.test_setting).to eq('default_value')
26
+ end
27
+ end
28
+
29
+ describe '.define_setting' do
30
+ it 'defines a getter method for the setting' do
31
+ test_class.define_setting(:api_key)
32
+
33
+ expect(test_class).to respond_to(:api_key)
34
+ end
35
+
36
+ it 'defines a setter method for the setting' do
37
+ test_class.define_setting(:api_key)
38
+
39
+ expect(test_class).to respond_to(:api_key=)
40
+ end
41
+
42
+ it 'sets default value when provided' do
43
+ test_class.define_setting(:timeout, 30)
44
+
45
+ expect(test_class.timeout).to eq(30)
46
+ end
47
+
48
+ it 'allows setting and getting values' do
49
+ test_class.define_setting(:database_url)
50
+
51
+ test_class.database_url = 'postgresql://localhost/test'
52
+
53
+ expect(test_class.database_url).to eq('postgresql://localhost/test')
54
+ end
55
+
56
+ it 'maintains separate values for different settings' do
57
+ test_class.define_setting(:host, 'localhost')
58
+ test_class.define_setting(:port, 3000)
59
+
60
+ expect(test_class.host).to eq('localhost')
61
+ expect(test_class.port).to eq(3000)
62
+ end
63
+ end
64
+
65
+ describe 'settings isolation' do
66
+ it 'maintains separate settings between different classes' do
67
+ class1 = Class.new { extend SunSword::Configuration }
68
+ class2 = Class.new { extend SunSword::Configuration }
69
+
70
+ class1.define_setting(:shared_setting, 'class1_value')
71
+ class2.define_setting(:shared_setting, 'class2_value')
72
+
73
+ expect(class1.shared_setting).to eq('class1_value')
74
+ expect(class2.shared_setting).to eq('class2_value')
75
+ end
76
+ end
77
+ end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SunSword
4
- VERSION = '0.0.10'
4
+ VERSION = '0.0.12'
5
5
  public_constant :VERSION
6
6
  end
metadata CHANGED
@@ -1,83 +1,219 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sun-sword
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.0.12
5
5
  platform: ruby
6
6
  authors:
7
- - kotarominami
7
+ - Kotaro Minami
8
8
  bindir: exe
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
- name: bundler
13
+ name: activesupport
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '7.0'
19
+ - - "<"
20
+ - !ruby/object:Gem::Version
21
+ version: '9.0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: '7.0'
29
+ - - "<"
30
+ - !ruby/object:Gem::Version
31
+ version: '9.0'
32
+ - !ruby/object:Gem::Dependency
33
+ name: hashie
34
+ requirement: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: '5.0'
39
+ - - "<"
40
+ - !ruby/object:Gem::Version
41
+ version: '6.0'
42
+ type: :runtime
43
+ prerelease: false
44
+ version_requirements: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '5.0'
49
+ - - "<"
50
+ - !ruby/object:Gem::Version
51
+ version: '6.0'
52
+ - !ruby/object:Gem::Dependency
53
+ name: thor
54
+ requirement: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: '1.2'
59
+ - - "<"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '1.2'
69
+ - - "<"
70
+ - !ruby/object:Gem::Version
71
+ version: '2.0'
72
+ - !ruby/object:Gem::Dependency
73
+ name: appraisal
14
74
  requirement: !ruby/object:Gem::Requirement
15
75
  requirements:
16
76
  - - "~>"
17
77
  - !ruby/object:Gem::Version
18
- version: 2.5.18
78
+ version: '2.5'
19
79
  type: :development
20
80
  prerelease: false
21
81
  version_requirements: !ruby/object:Gem::Requirement
22
82
  requirements:
23
83
  - - "~>"
24
84
  - !ruby/object:Gem::Version
25
- version: 2.5.18
85
+ version: '2.5'
86
+ - !ruby/object:Gem::Dependency
87
+ name: bundler
88
+ requirement: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: '2.4'
93
+ - - "<"
94
+ - !ruby/object:Gem::Version
95
+ version: '3.0'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '2.4'
103
+ - - "<"
104
+ - !ruby/object:Gem::Version
105
+ version: '3.0'
106
+ - !ruby/object:Gem::Dependency
107
+ name: generator_spec
108
+ requirement: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: '0.9'
113
+ - - "<"
114
+ - !ruby/object:Gem::Version
115
+ version: '1.0'
116
+ type: :development
117
+ prerelease: false
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '0.9'
123
+ - - "<"
124
+ - !ruby/object:Gem::Version
125
+ version: '1.0'
26
126
  - !ruby/object:Gem::Dependency
27
127
  name: rake
28
128
  requirement: !ruby/object:Gem::Requirement
29
129
  requirements:
30
- - - "~>"
130
+ - - ">="
31
131
  - !ruby/object:Gem::Version
32
- version: 13.2.1
132
+ version: '13.0'
133
+ - - "<"
134
+ - !ruby/object:Gem::Version
135
+ version: '14.0'
33
136
  type: :development
34
137
  prerelease: false
35
138
  version_requirements: !ruby/object:Gem::Requirement
36
139
  requirements:
37
- - - "~>"
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ version: '13.0'
143
+ - - "<"
38
144
  - !ruby/object:Gem::Version
39
- version: 13.2.1
145
+ version: '14.0'
40
146
  - !ruby/object:Gem::Dependency
41
147
  name: rspec
42
148
  requirement: !ruby/object:Gem::Requirement
43
149
  requirements:
44
- - - "~>"
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '3.12'
153
+ - - "<"
45
154
  - !ruby/object:Gem::Version
46
- version: 3.13.0
155
+ version: '4.0'
47
156
  type: :development
48
157
  prerelease: false
49
158
  version_requirements: !ruby/object:Gem::Requirement
50
159
  requirements:
51
- - - "~>"
160
+ - - ">="
161
+ - !ruby/object:Gem::Version
162
+ version: '3.12'
163
+ - - "<"
164
+ - !ruby/object:Gem::Version
165
+ version: '4.0'
166
+ - !ruby/object:Gem::Dependency
167
+ name: rubocop
168
+ requirement: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: '1.63'
173
+ - - "<"
174
+ - !ruby/object:Gem::Version
175
+ version: '2.0'
176
+ type: :development
177
+ prerelease: false
178
+ version_requirements: !ruby/object:Gem::Requirement
179
+ requirements:
180
+ - - ">="
181
+ - !ruby/object:Gem::Version
182
+ version: '1.63'
183
+ - - "<"
52
184
  - !ruby/object:Gem::Version
53
- version: 3.13.0
54
- description: Sun Sword is a Generator for Clean Architecture.
185
+ version: '2.0'
186
+ description: SunSword men-setup frontend (Vite/Stimulus/Tailwind) dan men-generate
187
+ struktur Clean Architecture untuk Rails 7.1/7.2/8 dengan generator yang idempotent,
188
+ reversible, dan minim gesekan.
55
189
  email:
56
190
  - kotaroisme@gmail.com
57
191
  executables: []
58
192
  extensions: []
59
193
  extra_rdoc_files: []
60
194
  files:
61
- - ".rspec"
62
- - ".rubocop.yml"
63
195
  - CHANGELOG.md
196
+ - Gemfile
197
+ - Gemfile.lock
64
198
  - LICENSE.txt
65
199
  - README.md
66
200
  - Rakefile
67
201
  - lib/generators/sun_sword/USAGE
68
202
  - lib/generators/sun_sword/frontend_generator.rb
203
+ - lib/generators/sun_sword/frontend_generator_spec.rb
69
204
  - lib/generators/sun_sword/init_generator.rb
205
+ - lib/generators/sun_sword/init_generator_spec.rb
70
206
  - lib/generators/sun_sword/scaffold_generator.rb
71
- - lib/generators/sun_sword/templates_frontend/Procfile.dev
207
+ - lib/generators/sun_sword/scaffold_generator_spec.rb
208
+ - lib/generators/sun_sword/templates_frontend/Procfile.dev.tt
72
209
  - lib/generators/sun_sword/templates_frontend/assets/config/manifest.js
73
- - lib/generators/sun_sword/templates_frontend/bin/watch
210
+ - lib/generators/sun_sword/templates_frontend/bin/watch.tt
74
211
  - lib/generators/sun_sword/templates_frontend/config/database.yml
75
212
  - lib/generators/sun_sword/templates_frontend/config/devise.rb
76
- - lib/generators/sun_sword/templates_frontend/config/vite.json
213
+ - lib/generators/sun_sword/templates_frontend/config/vite.json.tt
77
214
  - lib/generators/sun_sword/templates_frontend/controllers/application_controller.rb.tt
78
- - lib/generators/sun_sword/templates_frontend/controllers/site_controller.rb
79
- - lib/generators/sun_sword/templates_frontend/db/seeds.rb
80
- - lib/generators/sun_sword/templates_frontend/db/structures/example.yaml.tt
215
+ - lib/generators/sun_sword/templates_frontend/controllers/tests_controller.rb
216
+ - lib/generators/sun_sword/templates_frontend/controllers/tests_controller_spec.rb
81
217
  - lib/generators/sun_sword/templates_frontend/env.development
82
218
  - lib/generators/sun_sword/templates_frontend/frontend/assets/images/.keep
83
219
  - lib/generators/sun_sword/templates_frontend/frontend/assets/images/kotaro.ico
@@ -85,11 +221,12 @@ files:
85
221
  - lib/generators/sun_sword/templates_frontend/frontend/assets/images/profile.jpeg
86
222
  - lib/generators/sun_sword/templates_frontend/frontend/entrypoints/application.js
87
223
  - lib/generators/sun_sword/templates_frontend/frontend/entrypoints/stimulus.js
88
- - lib/generators/sun_sword/templates_frontend/frontend/pages/stimulus.js
224
+ - lib/generators/sun_sword/templates_frontend/frontend/pages/tests-stimulus.js
89
225
  - lib/generators/sun_sword/templates_frontend/frontend/pages/web.js
90
226
  - lib/generators/sun_sword/templates_frontend/frontend/stylesheets/application.css
91
227
  - lib/generators/sun_sword/templates_frontend/helpers/application_helper.rb
92
- - lib/generators/sun_sword/templates_frontend/package.json
228
+ - lib/generators/sun_sword/templates_frontend/helpers/application_helper_spec.rb
229
+ - lib/generators/sun_sword/templates_frontend/package.json.tt
93
230
  - lib/generators/sun_sword/templates_frontend/rubocop.yml.tt
94
231
  - lib/generators/sun_sword/templates_frontend/views/components/_action_destroy.html.erb.tt
95
232
  - lib/generators/sun_sword/templates_frontend/views/components/_action_edit.html.erb.tt
@@ -101,11 +238,16 @@ files:
101
238
  - lib/generators/sun_sword/templates_frontend/views/layouts/application.html.erb.tt
102
239
  - lib/generators/sun_sword/templates_frontend/views/layouts/dashboard/_sidebar.html.erb.tt
103
240
  - lib/generators/sun_sword/templates_frontend/views/layouts/dashboard/application.html.erb.tt
104
- - lib/generators/sun_sword/templates_frontend/views/site/_comment.html.erb.tt
105
- - lib/generators/sun_sword/templates_frontend/views/site/stimulus.html.erb.tt
241
+ - lib/generators/sun_sword/templates_frontend/views/tests/_frame_content.html.erb
242
+ - lib/generators/sun_sword/templates_frontend/views/tests/_log_entry.html.erb
243
+ - lib/generators/sun_sword/templates_frontend/views/tests/_updated_content.html.erb
244
+ - lib/generators/sun_sword/templates_frontend/views/tests/stimulus.html.erb
245
+ - lib/generators/sun_sword/templates_frontend/views/tests/turbo_drive.html.erb
246
+ - lib/generators/sun_sword/templates_frontend/views/tests/turbo_frame.html.erb
106
247
  - lib/generators/sun_sword/templates_frontend/vite.config.ts.tt
107
248
  - lib/generators/sun_sword/templates_init/config/initializers/sun_sword.rb
108
249
  - lib/generators/sun_sword/templates_scaffold/controllers/controller.rb.tt
250
+ - lib/generators/sun_sword/templates_scaffold/controllers/controller_spec.rb.tt
109
251
  - lib/generators/sun_sword/templates_scaffold/example.rb.tt
110
252
  - lib/generators/sun_sword/templates_scaffold/views/_form.html.erb.tt
111
253
  - lib/generators/sun_sword/templates_scaffold/views/components/menu/link.html.erb.tt
@@ -113,14 +255,20 @@ files:
113
255
  - lib/generators/sun_sword/templates_scaffold/views/index.html.erb.tt
114
256
  - lib/generators/sun_sword/templates_scaffold/views/new.html.erb.tt
115
257
  - lib/generators/sun_sword/templates_scaffold/views/show.html.erb.tt
258
+ - lib/generators/tmp/db/structures/test_structure.yaml
116
259
  - lib/sun-sword.rb
117
260
  - lib/sun_sword/configuration.rb
261
+ - lib/sun_sword/configuration_spec.rb
118
262
  - lib/sun_sword/version.rb
119
263
  homepage: https://github.com/kotaroisme/sun-sword
120
264
  licenses:
121
265
  - MIT
122
266
  metadata:
123
- source_code_uri: https://github.com/kotaroisme/sun-sword
267
+ rubygems_mfa_required: 'true'
268
+ homepage_uri: https://github.com/kotaroisme/sun-sword
269
+ changelog_uri: https://github.com/kotaroisme/sun-sword/blob/main/CHANGELOG.md
270
+ bug_tracker_uri: https://github.com/kotaroisme/sun-sword/issues
271
+ documentation_uri: https://github.com/kotaroisme/sun-sword#readme
124
272
  rdoc_options: []
125
273
  require_paths:
126
274
  - lib
@@ -128,7 +276,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
128
276
  requirements:
129
277
  - - ">="
130
278
  - !ruby/object:Gem::Version
131
- version: 3.0.0
279
+ version: '3.2'
132
280
  required_rubygems_version: !ruby/object:Gem::Requirement
133
281
  requirements:
134
282
  - - ">="
@@ -137,5 +285,5 @@ required_rubygems_version: !ruby/object:Gem::Requirement
137
285
  requirements: []
138
286
  rubygems_version: 3.7.2
139
287
  specification_version: 4
140
- summary: Sun Sword is a Generator for Clean Architecture
288
+ summary: 'Rails generators: Vite + Tailwind + Hotwire + Clean Architecture scaffolds'
141
289
  test_files: []
data/.rspec DELETED
@@ -1,3 +0,0 @@
1
- --format documentation
2
- --color
3
- --require spec_helper