scenic-cascade 0.1.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.
- checksums.yaml +7 -0
- data/.dockerignore +6 -0
- data/.env +4 -0
- data/.rspec +3 -0
- data/.rubocop.yml +24 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +5 -0
- data/CODE_OF_CONDUCT.md +84 -0
- data/Dockerfile +6 -0
- data/Gemfile +20 -0
- data/Gemfile.lock +231 -0
- data/LICENSE +201 -0
- data/README.md +95 -0
- data/Rakefile +22 -0
- data/Steepfile +9 -0
- data/docker-compose.yml +16 -0
- data/lib/generators/scenic/view/cascade/USAGE +15 -0
- data/lib/generators/scenic/view/cascade/cascade_generator.rb +38 -0
- data/lib/generators/scenic/view/cascade/templates/db/migrate/create_view.rb.erb +7 -0
- data/lib/generators/scenic/view/cascade/templates/db/migrate/update_view.rb.erb +26 -0
- data/lib/scenic/cascade/definition_finder.rb +41 -0
- data/lib/scenic/cascade/dependency.rb +37 -0
- data/lib/scenic/cascade/dependency_finder.rb +51 -0
- data/lib/scenic/cascade/dependent_finder.rb +53 -0
- data/lib/scenic/cascade/version.rb +7 -0
- data/lib/scenic/cascade/view.rb +36 -0
- data/lib/scenic/cascade/view_with_version.rb +34 -0
- data/lib/scenic/cascade.rb +18 -0
- data/manifest.yaml +2 -0
- data/rbs_collection.lock.yaml +188 -0
- data/rbs_collection.yaml +15 -0
- data/sig/generators/scenic/view/cascade/cascade_generator.rbs +13 -0
- data/sig/generators/scenic/view/view_generator.rbs +14 -0
- data/sig/scenic/cascade/definition_finder.rbs +14 -0
- data/sig/scenic/cascade/dependency.rbs +22 -0
- data/sig/scenic/cascade/dependency_finder.rbs +11 -0
- data/sig/scenic/cascade/dependent_finder.rbs +12 -0
- data/sig/scenic/cascade/view.rbs +21 -0
- data/sig/scenic/cascade/view_with_version.rbs +17 -0
- data/sig/scenic/cascade.rbs +13 -0
- data/sig/scenic/definition.rbs +9 -0
- metadata +101 -0
@@ -0,0 +1,188 @@
|
|
1
|
+
---
|
2
|
+
path: ".gem_rbs_collection"
|
3
|
+
gems:
|
4
|
+
- name: actionpack
|
5
|
+
version: '6.0'
|
6
|
+
source:
|
7
|
+
type: git
|
8
|
+
name: ruby/gem_rbs_collection
|
9
|
+
revision: 73137fe17c719cf52eaf099d541c0fbd9192500e
|
10
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
11
|
+
repo_dir: gems
|
12
|
+
- name: actionview
|
13
|
+
version: '6.0'
|
14
|
+
source:
|
15
|
+
type: git
|
16
|
+
name: ruby/gem_rbs_collection
|
17
|
+
revision: 73137fe17c719cf52eaf099d541c0fbd9192500e
|
18
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
19
|
+
repo_dir: gems
|
20
|
+
- name: activemodel
|
21
|
+
version: '6.0'
|
22
|
+
source:
|
23
|
+
type: git
|
24
|
+
name: ruby/gem_rbs_collection
|
25
|
+
revision: 73137fe17c719cf52eaf099d541c0fbd9192500e
|
26
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
27
|
+
repo_dir: gems
|
28
|
+
- name: activerecord
|
29
|
+
version: '6.1'
|
30
|
+
source:
|
31
|
+
type: git
|
32
|
+
name: ruby/gem_rbs_collection
|
33
|
+
revision: 73137fe17c719cf52eaf099d541c0fbd9192500e
|
34
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
35
|
+
repo_dir: gems
|
36
|
+
- name: activesupport
|
37
|
+
version: '6.0'
|
38
|
+
source:
|
39
|
+
type: git
|
40
|
+
name: ruby/gem_rbs_collection
|
41
|
+
revision: 73137fe17c719cf52eaf099d541c0fbd9192500e
|
42
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
43
|
+
repo_dir: gems
|
44
|
+
- name: base64
|
45
|
+
version: '0'
|
46
|
+
source:
|
47
|
+
type: stdlib
|
48
|
+
- name: bigdecimal
|
49
|
+
version: '0'
|
50
|
+
source:
|
51
|
+
type: stdlib
|
52
|
+
- name: concurrent-ruby
|
53
|
+
version: '1.1'
|
54
|
+
source:
|
55
|
+
type: git
|
56
|
+
name: ruby/gem_rbs_collection
|
57
|
+
revision: 20e6e0f0685139dbd29df50e03367e222aa5d1b8
|
58
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
59
|
+
repo_dir: gems
|
60
|
+
- name: connection_pool
|
61
|
+
version: '2.4'
|
62
|
+
source:
|
63
|
+
type: git
|
64
|
+
name: ruby/gem_rbs_collection
|
65
|
+
revision: 20e6e0f0685139dbd29df50e03367e222aa5d1b8
|
66
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
67
|
+
repo_dir: gems
|
68
|
+
- name: date
|
69
|
+
version: '0'
|
70
|
+
source:
|
71
|
+
type: stdlib
|
72
|
+
- name: dbm
|
73
|
+
version: '0'
|
74
|
+
source:
|
75
|
+
type: stdlib
|
76
|
+
- name: fileutils
|
77
|
+
version: '0'
|
78
|
+
source:
|
79
|
+
type: stdlib
|
80
|
+
- name: i18n
|
81
|
+
version: '1.10'
|
82
|
+
source:
|
83
|
+
type: git
|
84
|
+
name: ruby/gem_rbs_collection
|
85
|
+
revision: 73137fe17c719cf52eaf099d541c0fbd9192500e
|
86
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
87
|
+
repo_dir: gems
|
88
|
+
- name: io-console
|
89
|
+
version: '0'
|
90
|
+
source:
|
91
|
+
type: stdlib
|
92
|
+
- name: logger
|
93
|
+
version: '0'
|
94
|
+
source:
|
95
|
+
type: stdlib
|
96
|
+
- name: minitest
|
97
|
+
version: '0'
|
98
|
+
source:
|
99
|
+
type: stdlib
|
100
|
+
- name: monitor
|
101
|
+
version: '0'
|
102
|
+
source:
|
103
|
+
type: stdlib
|
104
|
+
- name: mutex_m
|
105
|
+
version: '0'
|
106
|
+
source:
|
107
|
+
type: stdlib
|
108
|
+
- name: nokogiri
|
109
|
+
version: '1.11'
|
110
|
+
source:
|
111
|
+
type: git
|
112
|
+
name: ruby/gem_rbs_collection
|
113
|
+
revision: 73137fe17c719cf52eaf099d541c0fbd9192500e
|
114
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
115
|
+
repo_dir: gems
|
116
|
+
- name: pathname
|
117
|
+
version: '0'
|
118
|
+
source:
|
119
|
+
type: stdlib
|
120
|
+
- name: pstore
|
121
|
+
version: '0'
|
122
|
+
source:
|
123
|
+
type: stdlib
|
124
|
+
- name: psych
|
125
|
+
version: '0'
|
126
|
+
source:
|
127
|
+
type: stdlib
|
128
|
+
- name: rack
|
129
|
+
version: 2.2.2
|
130
|
+
source:
|
131
|
+
type: git
|
132
|
+
name: ruby/gem_rbs_collection
|
133
|
+
revision: 73137fe17c719cf52eaf099d541c0fbd9192500e
|
134
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
135
|
+
repo_dir: gems
|
136
|
+
- name: rails-dom-testing
|
137
|
+
version: '2.0'
|
138
|
+
source:
|
139
|
+
type: git
|
140
|
+
name: ruby/gem_rbs_collection
|
141
|
+
revision: 20e6e0f0685139dbd29df50e03367e222aa5d1b8
|
142
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
143
|
+
repo_dir: gems
|
144
|
+
- name: railties
|
145
|
+
version: '6.0'
|
146
|
+
source:
|
147
|
+
type: git
|
148
|
+
name: ruby/gem_rbs_collection
|
149
|
+
revision: 73137fe17c719cf52eaf099d541c0fbd9192500e
|
150
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
151
|
+
repo_dir: gems
|
152
|
+
- name: rake
|
153
|
+
version: '13.0'
|
154
|
+
source:
|
155
|
+
type: git
|
156
|
+
name: ruby/gem_rbs_collection
|
157
|
+
revision: 20e6e0f0685139dbd29df50e03367e222aa5d1b8
|
158
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
159
|
+
repo_dir: gems
|
160
|
+
- name: rdoc
|
161
|
+
version: '0'
|
162
|
+
source:
|
163
|
+
type: stdlib
|
164
|
+
- name: singleton
|
165
|
+
version: '0'
|
166
|
+
source:
|
167
|
+
type: stdlib
|
168
|
+
- name: thor
|
169
|
+
version: '1.2'
|
170
|
+
source:
|
171
|
+
type: git
|
172
|
+
name: ruby/gem_rbs_collection
|
173
|
+
revision: 20e6e0f0685139dbd29df50e03367e222aa5d1b8
|
174
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
175
|
+
repo_dir: gems
|
176
|
+
- name: time
|
177
|
+
version: '0'
|
178
|
+
source:
|
179
|
+
type: stdlib
|
180
|
+
- name: timeout
|
181
|
+
version: '0'
|
182
|
+
source:
|
183
|
+
type: stdlib
|
184
|
+
- name: tsort
|
185
|
+
version: '0'
|
186
|
+
source:
|
187
|
+
type: stdlib
|
188
|
+
gemfile_lock_path: Gemfile.lock
|
data/rbs_collection.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
# Download sources
|
2
|
+
sources:
|
3
|
+
- name: ruby/gem_rbs_collection
|
4
|
+
remote: https://github.com/ruby/gem_rbs_collection.git
|
5
|
+
revision: main
|
6
|
+
repo_dir: gems
|
7
|
+
|
8
|
+
# A directory to install the downloaded RBSs
|
9
|
+
path: .gem_rbs_collection
|
10
|
+
|
11
|
+
gems:
|
12
|
+
# Skip loading rbs gem's RBS.
|
13
|
+
# It's unnecessary if you don't use rbs as a library.
|
14
|
+
- name: rbs
|
15
|
+
ignore: true
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Scenic
|
2
|
+
module Generators
|
3
|
+
class ViewGenerator
|
4
|
+
def self.source_root: (String?) -> void
|
5
|
+
def plural_name: -> String
|
6
|
+
def plural_file_name: -> String
|
7
|
+
def migration_template: (String, String) -> void
|
8
|
+
|
9
|
+
def creating_new_view?: -> bool
|
10
|
+
def destroying_initial_view?: -> bool
|
11
|
+
def version: -> String
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Scenic
|
2
|
+
module Cascade
|
3
|
+
module DefinitionFinder
|
4
|
+
module ClassMethods
|
5
|
+
def find_definitions_of: (String) -> Array[Scenic::Definition]
|
6
|
+
def find_latest_definition_of: (String) -> Scenic::Definition
|
7
|
+
|
8
|
+
private
|
9
|
+
|
10
|
+
def go: (String, Integer) -> Array[Scenic::Definition]
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Scenic
|
2
|
+
module Cascade
|
3
|
+
interface _DependencyLike
|
4
|
+
def from: -> Scenic::Cascade::View
|
5
|
+
def to: -> Scenic::Cascade::View
|
6
|
+
end
|
7
|
+
|
8
|
+
class Dependency
|
9
|
+
attr_reader from: Scenic::Cascade::View
|
10
|
+
attr_reader to: Scenic::Cascade::View
|
11
|
+
|
12
|
+
def initialize: (from: Scenic::Cascade::View, to: Scenic::Cascade::View) -> void
|
13
|
+
|
14
|
+
def ==: (_DependencyLike) -> bool
|
15
|
+
|
16
|
+
def to_s: -> String
|
17
|
+
def inspect: -> String
|
18
|
+
|
19
|
+
def self.from_hash: ({ 'from' => String, 'from_materialized' => bool, 'to' => String, 'to_materialized' => bool }) -> Dependency
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Scenic
|
2
|
+
module Cascade
|
3
|
+
module DependentFinder
|
4
|
+
module ClassMethods
|
5
|
+
DEPENDANT_SQL: String
|
6
|
+
|
7
|
+
def view_dependents_of: (String, ?recursive: bool) -> Array[Scenic::Cascade::Dependency]
|
8
|
+
alias view_dependants_of view_dependents_of
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Scenic
|
2
|
+
module Cascade
|
3
|
+
interface _ViewLike
|
4
|
+
def name: -> String
|
5
|
+
def materialized?: -> bool
|
6
|
+
end
|
7
|
+
|
8
|
+
class View
|
9
|
+
attr_reader name: String
|
10
|
+
|
11
|
+
def initialize: (name: String, materialized: bool) -> void
|
12
|
+
|
13
|
+
def materialized?: -> bool
|
14
|
+
|
15
|
+
def ==: (_ViewLike) -> bool
|
16
|
+
|
17
|
+
def to_s: -> String
|
18
|
+
def inspect: -> String
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Scenic
|
2
|
+
module Cascade
|
3
|
+
interface _ViewWithVersionLike
|
4
|
+
def name: -> String
|
5
|
+
def version: -> Integer
|
6
|
+
def materialized?: -> bool
|
7
|
+
end
|
8
|
+
|
9
|
+
class ViewWithVersion < Scenic::Cascade::View
|
10
|
+
attr_reader version: Integer
|
11
|
+
|
12
|
+
def initialize: (name: String, version: Integer, materialized: bool) -> void
|
13
|
+
|
14
|
+
def ==: (_ViewWithVersionLike) -> bool
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Scenic
|
2
|
+
module Cascade
|
3
|
+
VERSION: String
|
4
|
+
|
5
|
+
def self.find_definitions_of: (String) -> Scenic::Definition
|
6
|
+
def self.find_latest_definition_of: (String) -> Scenic::Definition
|
7
|
+
|
8
|
+
def self.view_dependents_of: (String, ?recursive: bool) -> Array[Dependency]
|
9
|
+
alias self.view_dependants_of self.view_dependents_of
|
10
|
+
|
11
|
+
def self.view_dependencies_of: (String, ?recursive: bool) -> Array[Dependency]
|
12
|
+
end
|
13
|
+
end
|
metadata
ADDED
@@ -0,0 +1,101 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: scenic-cascade
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Akiomi Kamakura
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2023-12-11 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: scenic
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.0'
|
27
|
+
description: A migration scenic file generator that supports cascading view updates
|
28
|
+
email:
|
29
|
+
- akiomik@gmail.com
|
30
|
+
executables: []
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files: []
|
33
|
+
files:
|
34
|
+
- ".dockerignore"
|
35
|
+
- ".env"
|
36
|
+
- ".rspec"
|
37
|
+
- ".rubocop.yml"
|
38
|
+
- ".ruby-version"
|
39
|
+
- CHANGELOG.md
|
40
|
+
- CODE_OF_CONDUCT.md
|
41
|
+
- Dockerfile
|
42
|
+
- Gemfile
|
43
|
+
- Gemfile.lock
|
44
|
+
- LICENSE
|
45
|
+
- README.md
|
46
|
+
- Rakefile
|
47
|
+
- Steepfile
|
48
|
+
- docker-compose.yml
|
49
|
+
- lib/generators/scenic/view/cascade/USAGE
|
50
|
+
- lib/generators/scenic/view/cascade/cascade_generator.rb
|
51
|
+
- lib/generators/scenic/view/cascade/templates/db/migrate/create_view.rb.erb
|
52
|
+
- lib/generators/scenic/view/cascade/templates/db/migrate/update_view.rb.erb
|
53
|
+
- lib/scenic/cascade.rb
|
54
|
+
- lib/scenic/cascade/definition_finder.rb
|
55
|
+
- lib/scenic/cascade/dependency.rb
|
56
|
+
- lib/scenic/cascade/dependency_finder.rb
|
57
|
+
- lib/scenic/cascade/dependent_finder.rb
|
58
|
+
- lib/scenic/cascade/version.rb
|
59
|
+
- lib/scenic/cascade/view.rb
|
60
|
+
- lib/scenic/cascade/view_with_version.rb
|
61
|
+
- manifest.yaml
|
62
|
+
- rbs_collection.lock.yaml
|
63
|
+
- rbs_collection.yaml
|
64
|
+
- sig/generators/scenic/view/cascade/cascade_generator.rbs
|
65
|
+
- sig/generators/scenic/view/view_generator.rbs
|
66
|
+
- sig/scenic/cascade.rbs
|
67
|
+
- sig/scenic/cascade/definition_finder.rbs
|
68
|
+
- sig/scenic/cascade/dependency.rbs
|
69
|
+
- sig/scenic/cascade/dependency_finder.rbs
|
70
|
+
- sig/scenic/cascade/dependent_finder.rbs
|
71
|
+
- sig/scenic/cascade/view.rbs
|
72
|
+
- sig/scenic/cascade/view_with_version.rbs
|
73
|
+
- sig/scenic/definition.rbs
|
74
|
+
homepage: https://github.com/akiomik/scenic-cascade
|
75
|
+
licenses:
|
76
|
+
- Apache-2.0
|
77
|
+
metadata:
|
78
|
+
homepage_uri: https://github.com/akiomik/scenic-cascade
|
79
|
+
source_code_uri: https://github.com/akiomik/scenic-cascade
|
80
|
+
changelog_uri: https://github.com/akiomik/scenic-cascade/blob/main/CHANGELOG.md
|
81
|
+
rubygems_mfa_required: 'true'
|
82
|
+
post_install_message:
|
83
|
+
rdoc_options: []
|
84
|
+
require_paths:
|
85
|
+
- lib
|
86
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: 2.6.0
|
91
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - ">="
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
96
|
+
requirements: []
|
97
|
+
rubygems_version: 3.4.10
|
98
|
+
signing_key:
|
99
|
+
specification_version: 4
|
100
|
+
summary: A migration scenic file generator that supports cascading view updates
|
101
|
+
test_files: []
|