scenic-cascade 0.1.1 → 0.1.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ea827703e734f29926dce60d10c981aaf1f2c25da8e4aba28988e80899fdb6ad
4
- data.tar.gz: 73cfb21d49275a218353d91090ea3e5b7b97c3d0d23b9a4900675c8f7625fcfb
3
+ metadata.gz: 9d210342197b949abc4156e8fcdc63ad74b04f1fde40fb207e35dc15b13e1efd
4
+ data.tar.gz: 60c19c6113bc29ebc57c068ef16d744661f33f9bdd06a763807b807e41d3f66f
5
5
  SHA512:
6
- metadata.gz: fa06bc234127080963c60a281b5e5a0721c438377df3249c123816b7f9d41662f174b825d809435618f660bd742693a8a74cac8e105c170099723c837757c746
7
- data.tar.gz: 25bc8589c1bfd12043e2ec95aa0c5a534b9608c3dd4e47008430a12b331f6bd096b8977968f985dce4692c01e3b56e1e157587852b78786d6406e613da0cf396
6
+ metadata.gz: 9040765c0fdadb9778139f634883a09466ddf80d8b63bf28c8b358150e0d4e6eb45556bb3d926c9e458c7e3fd8bf9deb7b8863d6a80694163f6b73643654ee09
7
+ data.tar.gz: 05ea8516e444b9c07cba0a8813af3985295897ce11c90790ca407eb5aa81d5d250e937d334269f5b87c797ee932a2ae7e1e09cff92d82c9a7041f89c35cbd06e
data/CHANGELOG.md CHANGED
@@ -7,6 +7,14 @@ and this project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.ht
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.1.2] - 2026-11-01
11
+
12
+ ### Fixed
13
+
14
+ - Select the latest existing dependent view definition when SQL version numbers have gaps.
15
+ - Report noncanonical numeric view definition filenames instead of silently selecting an older definition.
16
+ - Leave view definition files untouched when a dependent view has no Scenic definition.
17
+
10
18
  ## [0.1.1] - 2026-10-30
11
19
 
12
20
  ### Fixed
@@ -19,6 +27,7 @@ and this project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.ht
19
27
 
20
28
  - Initial release of the cascading Scenic view migration generator.
21
29
 
22
- [Unreleased]: https://github.com/akiomik/scenic-cascade/compare/v0.1.1...HEAD
30
+ [Unreleased]: https://github.com/akiomik/scenic-cascade/compare/v0.1.2...HEAD
31
+ [0.1.2]: https://github.com/akiomik/scenic-cascade/compare/v0.1.1...v0.1.2
23
32
  [0.1.1]: https://github.com/akiomik/scenic-cascade/compare/v0.1.0...v0.1.1
24
33
  [0.1.0]: https://github.com/akiomik/scenic-cascade/releases/tag/v0.1.0
data/Gemfile CHANGED
@@ -8,7 +8,8 @@ gemspec
8
8
  gem 'rake', '~> 13.0'
9
9
 
10
10
  # type checking
11
- gem 'steep', require: false
11
+ # Steep 2.x drops Ruby 3.1, which remains in the CI matrix.
12
+ gem 'steep', '~> 1.10', require: false
12
13
 
13
14
  # testing
14
15
  gem 'activerecord', '~> 7.1.0'
data/Gemfile.lock CHANGED
@@ -1,13 +1,12 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- scenic-cascade (0.1.1)
4
+ scenic-cascade (0.1.2)
5
5
  scenic (~> 1.0)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- abbrev (0.1.1)
11
10
  actionpack (7.1.6)
12
11
  actionview (= 7.1.6)
13
12
  activesupport (= 7.1.6)
@@ -58,7 +57,7 @@ GEM
58
57
  concurrent-ruby (1.3.7)
59
58
  connection_pool (2.4.1)
60
59
  crass (1.0.8)
61
- csv (3.2.8)
60
+ csv (3.3.7)
62
61
  database_cleaner-active_record (2.1.0)
63
62
  activerecord (>= 5.a)
64
63
  database_cleaner-core (~> 2.0.0)
@@ -68,8 +67,10 @@ GEM
68
67
  drb (2.2.0)
69
68
  ruby2_keywords
70
69
  erubi (1.12.0)
71
- ffi (1.16.3)
72
- fileutils (1.7.2)
70
+ ffi (1.17.4-aarch64-linux-musl)
71
+ ffi (1.17.4-arm64-darwin)
72
+ ffi (1.17.4-x86_64-linux-gnu)
73
+ fileutils (1.8.1)
73
74
  i18n (1.14.1)
74
75
  concurrent-ruby (~> 1.0)
75
76
  io-console (0.6.0)
@@ -77,8 +78,9 @@ GEM
77
78
  rdoc
78
79
  reline (>= 0.3.8)
79
80
  json (2.7.1)
80
- language_server-protocol (3.17.0.3)
81
- listen (3.8.0)
81
+ language_server-protocol (3.17.0.6)
82
+ listen (3.10.1)
83
+ logger
82
84
  rb-fsevent (~> 0.10, >= 0.10.3)
83
85
  rb-inotify (~> 0.9, >= 0.9.10)
84
86
  logger (1.6.0)
@@ -86,7 +88,7 @@ GEM
86
88
  crass (~> 1.0.2)
87
89
  nokogiri (>= 1.12.0)
88
90
  minitest (5.20.0)
89
- mutex_m (0.2.0)
91
+ mutex_m (0.3.0)
90
92
  nokogiri (1.18.10-aarch64-linux-musl)
91
93
  racc (~> 1.4)
92
94
  nokogiri (1.18.10-arm64-darwin)
@@ -129,10 +131,11 @@ GEM
129
131
  rainbow (3.1.1)
130
132
  rake (13.1.0)
131
133
  rb-fsevent (0.11.2)
132
- rb-inotify (0.10.1)
134
+ rb-inotify (0.11.1)
133
135
  ffi (~> 1.0)
134
- rbs (3.3.2)
135
- abbrev
136
+ rbs (3.10.4)
137
+ logger
138
+ tsort
136
139
  rdoc (6.6.3.1)
137
140
  psych (>= 4.0.0)
138
141
  regexp_parser (2.8.3)
@@ -201,31 +204,34 @@ GEM
201
204
  simplecov (~> 0.19)
202
205
  simplecov-html (0.12.3)
203
206
  simplecov_json_formatter (0.1.4)
204
- steep (1.6.0)
207
+ steep (1.10.0)
205
208
  activesupport (>= 5.1)
206
209
  concurrent-ruby (>= 1.1.10)
207
210
  csv (>= 3.0.9)
208
211
  fileutils (>= 1.1.0)
209
212
  json (>= 2.1.0)
210
- language_server-protocol (>= 3.15, < 4.0)
213
+ language_server-protocol (>= 3.17.0.4, < 4.0)
211
214
  listen (~> 3.0)
212
215
  logger (>= 1.3.0)
216
+ mutex_m (>= 0.3.0)
213
217
  parser (>= 3.1)
214
218
  rainbow (>= 2.2.2, < 4.0)
215
- rbs (>= 3.1.0)
219
+ rbs (~> 3.9)
216
220
  securerandom (>= 0.1)
217
221
  strscan (>= 1.0.0)
218
- terminal-table (>= 2, < 4)
222
+ terminal-table (>= 2, < 5)
223
+ uri (>= 0.12.0)
219
224
  stringio (3.2.0)
220
- strscan (3.1.0)
221
- terminal-table (3.0.2)
222
- unicode-display_width (>= 1.1.1, < 3)
225
+ strscan (3.1.8)
226
+ terminal-table (4.0.0)
227
+ unicode-display_width (>= 1.1.1, < 4)
223
228
  thor (1.4.0)
224
229
  timeout (0.4.1)
225
230
  tsort (0.2.0)
226
231
  tzinfo (2.0.6)
227
232
  concurrent-ruby (~> 1.0)
228
233
  unicode-display_width (2.5.0)
234
+ uri (1.1.2)
229
235
  webrick (1.8.2)
230
236
  zeitwerk (2.6.12)
231
237
 
@@ -250,7 +256,7 @@ DEPENDENCIES
250
256
  scenic-cascade!
251
257
  simplecov
252
258
  simplecov-cobertura (~> 3.2)
253
- steep
259
+ steep (~> 1.10)
254
260
 
255
261
  BUNDLED WITH
256
262
  2.4.22
data/Steepfile CHANGED
@@ -1,6 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- target :lib
3
+ target :lib do
4
+ signature 'sig'
5
+ check 'lib'
6
+ end
4
7
 
5
8
  # target :test do
6
9
  # signature "sig", "sig-private"
@@ -11,6 +11,11 @@ module Scenic
11
11
  class CascadeGenerator < Scenic::Generators::ViewGenerator
12
12
  source_root File.expand_path('templates', __dir__ || '.')
13
13
 
14
+ def create_view_definition
15
+ dependents unless destroying? || creating_new_view?
16
+ super
17
+ end
18
+
14
19
  def create_migration_file
15
20
  if creating_new_view? || destroying_initial_view?
16
21
  migration_template('db/migrate/create_view.rb.erb',
@@ -24,7 +29,8 @@ module Scenic
24
29
  private
25
30
 
26
31
  def dependents
27
- return @dependents if @dependents.present?
32
+ cached_dependents = @dependents
33
+ return cached_dependents unless cached_dependents.nil?
28
34
 
29
35
  deps = Scenic::Cascade.view_dependents_of(plural_name, recursive: true)
30
36
  views = deps.map { |dep| view_with_version_for(dep) }
@@ -34,7 +40,10 @@ module Scenic
34
40
 
35
41
  def view_with_version_for(dep)
36
42
  name = dep.from.name
37
- version = Scenic::Cascade.find_latest_definition_of(name).version.to_i
43
+ definition = Scenic::Cascade.find_definitions_of(name).last
44
+ raise ArgumentError, "Dependent view #{name} has no Scenic definition file" if definition.nil?
45
+
46
+ version = definition.version.to_i
38
47
  Scenic::Cascade::ViewWithVersion.new(name: name, version: version, materialized: dep.from.materialized?)
39
48
  end
40
49
  end
@@ -14,7 +14,13 @@ module Scenic
14
14
  # Provides class methods to injected class
15
15
  module ClassMethods
16
16
  def find_definitions_of(view_name)
17
- go(view_name, 1)
17
+ first_path = Scenic::Definition.new(view_name, 1).full_path
18
+ directory = first_path.dirname
19
+ return [] unless directory.directory?
20
+
21
+ prefix = first_path.basename.to_s.sub(/\d+\.sql\z/, '')
22
+ directory.children.map { |path| definition_at(path, view_name, prefix) }
23
+ .compact.sort_by { |definition| definition.version.to_i }
18
24
  end
19
25
 
20
26
  def find_latest_definition_of(view_name)
@@ -29,11 +35,16 @@ module Scenic
29
35
 
30
36
  private
31
37
 
32
- def go(view_name, version)
33
- definition = Scenic::Definition.new(view_name, version)
34
- return [] unless File.exist?(definition.full_path)
38
+ def definition_at(path, view_name, prefix)
39
+ return unless path.file?
40
+
41
+ match = /\A#{Regexp.escape(prefix)}(?<version>\d+)\.sql\z/.match(path.basename.to_s)
42
+ return unless match && match[:version].to_i.positive?
43
+
44
+ definition = Scenic::Definition.new(view_name, match[:version].to_i)
45
+ return definition if definition.full_path == path
35
46
 
36
- [definition, *go(view_name, version + 1)]
47
+ raise ArgumentError, "Noncanonical view definition #{path}; expected #{definition.full_path}"
37
48
  end
38
49
  end
39
50
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Scenic
4
4
  module Cascade
5
- VERSION = '0.1.1'
5
+ VERSION = '0.1.2'
6
6
  end
7
7
  end
@@ -6,7 +6,7 @@ gems:
6
6
  source:
7
7
  type: git
8
8
  name: ruby/gem_rbs_collection
9
- revision: 73137fe17c719cf52eaf099d541c0fbd9192500e
9
+ revision: 9e17daa08b1710667699a208981cffd21dbf15f6
10
10
  remote: https://github.com/ruby/gem_rbs_collection.git
11
11
  repo_dir: gems
12
12
  - name: actionview
@@ -14,47 +14,67 @@ gems:
14
14
  source:
15
15
  type: git
16
16
  name: ruby/gem_rbs_collection
17
- revision: 73137fe17c719cf52eaf099d541c0fbd9192500e
17
+ revision: 9e17daa08b1710667699a208981cffd21dbf15f6
18
18
  remote: https://github.com/ruby/gem_rbs_collection.git
19
19
  repo_dir: gems
20
20
  - name: activemodel
21
- version: '6.0'
21
+ version: '7.1'
22
22
  source:
23
23
  type: git
24
24
  name: ruby/gem_rbs_collection
25
- revision: 73137fe17c719cf52eaf099d541c0fbd9192500e
25
+ revision: 9e17daa08b1710667699a208981cffd21dbf15f6
26
26
  remote: https://github.com/ruby/gem_rbs_collection.git
27
27
  repo_dir: gems
28
28
  - name: activerecord
29
- version: '6.1'
29
+ version: '7.1'
30
30
  source:
31
31
  type: git
32
32
  name: ruby/gem_rbs_collection
33
- revision: 73137fe17c719cf52eaf099d541c0fbd9192500e
33
+ revision: 9e17daa08b1710667699a208981cffd21dbf15f6
34
34
  remote: https://github.com/ruby/gem_rbs_collection.git
35
35
  repo_dir: gems
36
36
  - name: activesupport
37
- version: '6.0'
37
+ version: '7.0'
38
38
  source:
39
39
  type: git
40
40
  name: ruby/gem_rbs_collection
41
- revision: 73137fe17c719cf52eaf099d541c0fbd9192500e
41
+ revision: 9e17daa08b1710667699a208981cffd21dbf15f6
42
42
  remote: https://github.com/ruby/gem_rbs_collection.git
43
43
  repo_dir: gems
44
44
  - name: base64
45
+ version: '0.1'
46
+ source:
47
+ type: git
48
+ name: ruby/gem_rbs_collection
49
+ revision: 9e17daa08b1710667699a208981cffd21dbf15f6
50
+ remote: https://github.com/ruby/gem_rbs_collection.git
51
+ repo_dir: gems
52
+ - name: benchmark
45
53
  version: '0'
46
54
  source:
47
55
  type: stdlib
48
56
  - name: bigdecimal
49
- version: '0'
57
+ version: '3.1'
50
58
  source:
51
- type: stdlib
59
+ type: git
60
+ name: ruby/gem_rbs_collection
61
+ revision: 9e17daa08b1710667699a208981cffd21dbf15f6
62
+ remote: https://github.com/ruby/gem_rbs_collection.git
63
+ repo_dir: gems
64
+ - name: cgi
65
+ version: '0.5'
66
+ source:
67
+ type: git
68
+ name: ruby/gem_rbs_collection
69
+ revision: 9e17daa08b1710667699a208981cffd21dbf15f6
70
+ remote: https://github.com/ruby/gem_rbs_collection.git
71
+ repo_dir: gems
52
72
  - name: concurrent-ruby
53
73
  version: '1.1'
54
74
  source:
55
75
  type: git
56
76
  name: ruby/gem_rbs_collection
57
- revision: 20e6e0f0685139dbd29df50e03367e222aa5d1b8
77
+ revision: 9e17daa08b1710667699a208981cffd21dbf15f6
58
78
  remote: https://github.com/ruby/gem_rbs_collection.git
59
79
  repo_dir: gems
60
80
  - name: connection_pool
@@ -62,7 +82,7 @@ gems:
62
82
  source:
63
83
  type: git
64
84
  name: ruby/gem_rbs_collection
65
- revision: 20e6e0f0685139dbd29df50e03367e222aa5d1b8
85
+ revision: 9e17daa08b1710667699a208981cffd21dbf15f6
66
86
  remote: https://github.com/ruby/gem_rbs_collection.git
67
87
  repo_dir: gems
68
88
  - name: date
@@ -73,6 +93,26 @@ gems:
73
93
  version: '0'
74
94
  source:
75
95
  type: stdlib
96
+ - name: delegate
97
+ version: '0'
98
+ source:
99
+ type: stdlib
100
+ - name: diff-lcs
101
+ version: '1.5'
102
+ source:
103
+ type: git
104
+ name: ruby/gem_rbs_collection
105
+ revision: 9e17daa08b1710667699a208981cffd21dbf15f6
106
+ remote: https://github.com/ruby/gem_rbs_collection.git
107
+ repo_dir: gems
108
+ - name: digest
109
+ version: '0'
110
+ source:
111
+ type: stdlib
112
+ - name: erb
113
+ version: '0'
114
+ source:
115
+ type: stdlib
76
116
  - name: fileutils
77
117
  version: '0'
78
118
  source:
@@ -82,7 +122,7 @@ gems:
82
122
  source:
83
123
  type: git
84
124
  name: ruby/gem_rbs_collection
85
- revision: 73137fe17c719cf52eaf099d541c0fbd9192500e
125
+ revision: 9e17daa08b1710667699a208981cffd21dbf15f6
86
126
  remote: https://github.com/ruby/gem_rbs_collection.git
87
127
  repo_dir: gems
88
128
  - name: io-console
@@ -94,25 +134,33 @@ gems:
94
134
  source:
95
135
  type: stdlib
96
136
  - name: minitest
97
- version: '0'
137
+ version: '5.25'
98
138
  source:
99
- type: stdlib
139
+ type: git
140
+ name: ruby/gem_rbs_collection
141
+ revision: 9e17daa08b1710667699a208981cffd21dbf15f6
142
+ remote: https://github.com/ruby/gem_rbs_collection.git
143
+ repo_dir: gems
100
144
  - name: monitor
101
145
  version: '0'
102
146
  source:
103
147
  type: stdlib
104
148
  - name: mutex_m
105
- version: '0'
149
+ version: 0.3.0
106
150
  source:
107
- type: stdlib
151
+ type: rubygems
108
152
  - name: nokogiri
109
153
  version: '1.11'
110
154
  source:
111
155
  type: git
112
156
  name: ruby/gem_rbs_collection
113
- revision: 73137fe17c719cf52eaf099d541c0fbd9192500e
157
+ revision: 9e17daa08b1710667699a208981cffd21dbf15f6
114
158
  remote: https://github.com/ruby/gem_rbs_collection.git
115
159
  repo_dir: gems
160
+ - name: openssl
161
+ version: '0'
162
+ source:
163
+ type: stdlib
116
164
  - name: pathname
117
165
  version: '0'
118
166
  source:
@@ -125,12 +173,20 @@ gems:
125
173
  version: '0'
126
174
  source:
127
175
  type: stdlib
176
+ - name: racc
177
+ version: '1.8'
178
+ source:
179
+ type: git
180
+ name: ruby/gem_rbs_collection
181
+ revision: 9e17daa08b1710667699a208981cffd21dbf15f6
182
+ remote: https://github.com/ruby/gem_rbs_collection.git
183
+ repo_dir: gems
128
184
  - name: rack
129
- version: 2.2.2
185
+ version: '2.2'
130
186
  source:
131
187
  type: git
132
188
  name: ruby/gem_rbs_collection
133
- revision: 73137fe17c719cf52eaf099d541c0fbd9192500e
189
+ revision: 9e17daa08b1710667699a208981cffd21dbf15f6
134
190
  remote: https://github.com/ruby/gem_rbs_collection.git
135
191
  repo_dir: gems
136
192
  - name: rails-dom-testing
@@ -138,7 +194,15 @@ gems:
138
194
  source:
139
195
  type: git
140
196
  name: ruby/gem_rbs_collection
141
- revision: 20e6e0f0685139dbd29df50e03367e222aa5d1b8
197
+ revision: 9e17daa08b1710667699a208981cffd21dbf15f6
198
+ remote: https://github.com/ruby/gem_rbs_collection.git
199
+ repo_dir: gems
200
+ - name: rails-html-sanitizer
201
+ version: '1.6'
202
+ source:
203
+ type: git
204
+ name: ruby/gem_rbs_collection
205
+ revision: 9e17daa08b1710667699a208981cffd21dbf15f6
142
206
  remote: https://github.com/ruby/gem_rbs_collection.git
143
207
  repo_dir: gems
144
208
  - name: railties
@@ -146,7 +210,7 @@ gems:
146
210
  source:
147
211
  type: git
148
212
  name: ruby/gem_rbs_collection
149
- revision: 73137fe17c719cf52eaf099d541c0fbd9192500e
213
+ revision: 9e17daa08b1710667699a208981cffd21dbf15f6
150
214
  remote: https://github.com/ruby/gem_rbs_collection.git
151
215
  repo_dir: gems
152
216
  - name: rake
@@ -154,23 +218,39 @@ gems:
154
218
  source:
155
219
  type: git
156
220
  name: ruby/gem_rbs_collection
157
- revision: 20e6e0f0685139dbd29df50e03367e222aa5d1b8
221
+ revision: 9e17daa08b1710667699a208981cffd21dbf15f6
158
222
  remote: https://github.com/ruby/gem_rbs_collection.git
159
223
  repo_dir: gems
160
224
  - name: rdoc
161
225
  version: '0'
162
226
  source:
163
227
  type: stdlib
228
+ - name: securerandom
229
+ version: '0'
230
+ source:
231
+ type: stdlib
164
232
  - name: singleton
165
233
  version: '0'
166
234
  source:
167
235
  type: stdlib
236
+ - name: socket
237
+ version: '0'
238
+ source:
239
+ type: stdlib
240
+ - name: stringio
241
+ version: '0'
242
+ source:
243
+ type: stdlib
244
+ - name: tempfile
245
+ version: '0'
246
+ source:
247
+ type: stdlib
168
248
  - name: thor
169
249
  version: '1.2'
170
250
  source:
171
251
  type: git
172
252
  name: ruby/gem_rbs_collection
173
- revision: 20e6e0f0685139dbd29df50e03367e222aa5d1b8
253
+ revision: 9e17daa08b1710667699a208981cffd21dbf15f6
174
254
  remote: https://github.com/ruby/gem_rbs_collection.git
175
255
  repo_dir: gems
176
256
  - name: time
@@ -185,4 +265,24 @@ gems:
185
265
  version: '0'
186
266
  source:
187
267
  type: stdlib
268
+ - name: tzinfo
269
+ version: '2.0'
270
+ source:
271
+ type: git
272
+ name: ruby/gem_rbs_collection
273
+ revision: 9e17daa08b1710667699a208981cffd21dbf15f6
274
+ remote: https://github.com/ruby/gem_rbs_collection.git
275
+ repo_dir: gems
276
+ - name: uri
277
+ version: '0'
278
+ source:
279
+ type: stdlib
280
+ - name: zeitwerk
281
+ version: '2.8'
282
+ source:
283
+ type: git
284
+ name: ruby/gem_rbs_collection
285
+ revision: 9e17daa08b1710667699a208981cffd21dbf15f6
286
+ remote: https://github.com/ruby/gem_rbs_collection.git
287
+ repo_dir: gems
188
288
  gemfile_lock_path: Gemfile.lock
data/rbs_collection.yaml CHANGED
@@ -2,7 +2,9 @@
2
2
  sources:
3
3
  - name: ruby/gem_rbs_collection
4
4
  remote: https://github.com/ruby/gem_rbs_collection.git
5
- revision: main
5
+ # To refresh upstream signatures, update this SHA, then run:
6
+ # bundle exec rbs collection update && bundle exec rbs collection install
7
+ revision: 9e17daa08b1710667699a208981cffd21dbf15f6
6
8
  repo_dir: gems
7
9
 
8
10
  # A directory to install the downloaded RBSs
@@ -13,10 +15,3 @@ gems:
13
15
  # It's unnecessary if you don't use rbs as a library.
14
16
  - name: rbs
15
17
  ignore: true
16
- # Racc is not used directly, and its current signatures require a newer RBS parser.
17
- - name: racc
18
- ignore: true
19
- # The CGI gem's signatures depend on StringIO signatures absent from RBS 3.3.2.
20
- # CGI is not used by this library directly.
21
- - name: cgi
22
- ignore: true
@@ -2,11 +2,15 @@ module Scenic
2
2
  module Generators
3
3
  module View
4
4
  class CascadeGenerator < Scenic::Generators::ViewGenerator
5
+ @dependents: Array[Scenic::Cascade::ViewWithVersion]?
6
+
7
+ def create_view_definition: -> void
5
8
  def create_migration_file: -> void
6
9
 
7
10
  private
8
11
 
9
12
  def dependents: -> Array[Scenic::Cascade::ViewWithVersion]
13
+ def view_with_version_for: (Scenic::Cascade::Dependency) -> Scenic::Cascade::ViewWithVersion
10
14
  end
11
15
  end
12
16
  end
@@ -2,13 +2,18 @@ module Scenic
2
2
  module Generators
3
3
  class ViewGenerator
4
4
  def self.source_root: (String?) -> void
5
- def plural_name: -> String
6
- def plural_file_name: -> String
7
5
  def migration_template: (String, String) -> void
8
6
 
7
+ def create_view_definition: -> void
8
+ def version: -> Integer
9
+
10
+ private
11
+
12
+ def plural_name: -> String
13
+ def plural_file_name: -> String
9
14
  def creating_new_view?: -> bool
15
+ def destroying?: -> bool
10
16
  def destroying_initial_view?: -> bool
11
- def version: -> String
12
17
  end
13
18
  end
14
19
  end
@@ -7,7 +7,7 @@ module Scenic
7
7
 
8
8
  private
9
9
 
10
- def go: (String, Integer) -> Array[Scenic::Definition]
10
+ def definition_at: (Pathname, String, String) -> Scenic::Definition?
11
11
  end
12
12
  end
13
13
  end
@@ -7,10 +7,12 @@ module Scenic
7
7
 
8
8
  class View
9
9
  attr_reader name: String
10
+ @materialized: bool
10
11
 
11
12
  def initialize: (name: String, materialized: bool) -> void
12
13
 
13
14
  def materialized?: -> bool
15
+ def formatted_name: -> String
14
16
 
15
17
  def ==: (_ViewLike) -> bool
16
18
 
@@ -12,6 +12,10 @@ module Scenic
12
12
  def initialize: (name: String, version: Integer, materialized: bool) -> void
13
13
 
14
14
  def ==: (_ViewWithVersionLike) -> bool
15
+
16
+ private
17
+
18
+ def formatted_version: -> String
15
19
  end
16
20
  end
17
21
  end
@@ -2,7 +2,7 @@ module Scenic
2
2
  module Cascade
3
3
  VERSION: String
4
4
 
5
- def self.find_definitions_of: (String) -> Scenic::Definition
5
+ def self.find_definitions_of: (String) -> Array[Scenic::Definition]
6
6
  def self.find_latest_definition_of: (String) -> Scenic::Definition
7
7
 
8
8
  def self.view_dependents_of: (String, ?recursive: bool) -> Array[Dependency]
@@ -1,5 +1,5 @@
1
1
  module Scenic
2
- module Definition
2
+ class Definition
3
3
  def self.new: (String, Integer) -> Scenic::Definition
4
4
 
5
5
  def full_path: -> Pathname
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scenic-cascade
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Akiomi Kamakura