orthoses-rails 0.8.0 → 1.0.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 +4 -4
- data/README.md +13 -65
- data/lib/generators/orthoses/rails/install_generator.rb +18 -0
- data/lib/orthoses/active_record/belongs_to.rb +15 -4
- data/lib/orthoses/active_record/enum.rb +5 -0
- data/lib/orthoses/active_record/generated_attribute_methods.rb +47 -55
- data/lib/orthoses/active_record/has_many.rb +15 -4
- data/lib/orthoses/active_record/has_one.rb +12 -2
- data/lib/orthoses/active_record/relation.rb +56 -0
- data/lib/orthoses/active_record.rb +36 -0
- data/lib/orthoses/active_support/delegation.rb +20 -9
- data/lib/orthoses/active_support/time_with_zone.rb +35 -28
- data/lib/orthoses/rails/application.rb +33 -0
- data/lib/orthoses/rails/version.rb +1 -1
- data/lib/orthoses/rails.rb +3 -2
- metadata +10 -47
- data/examples/rails/Gemfile +0 -16
- data/examples/rails/Gemfile.lock +0 -179
- data/examples/rails/Rakefile +0 -328
- data/examples/rails/config/database.yml +0 -8
- data/examples/rails/config/storage.yml +0 -3
- data/examples/rails/known_sig/actionpack/7.0/action_controller/metal.rbs +0 -4
- data/examples/rails/known_sig/activemodel/7.0/active_model/serialization.rbs +0 -4
- data/examples/rails/known_sig/activemodel/7.0/active_model/validations.rbs +0 -4
- data/examples/rails/known_sig/activerecord/6.0/_active_record_relation.rbs +0 -49
- data/examples/rails/known_sig/activerecord/6.0/_active_record_relation_class_methods.rbs +0 -45
- data/examples/rails/known_sig/activerecord/6.0/active_record/result.rbs +0 -5
- data/examples/rails/known_sig/activerecord/6.1/_active_record_relation.rbs +0 -49
- data/examples/rails/known_sig/activerecord/6.1/_active_record_relation_class_methods.rbs +0 -45
- data/examples/rails/known_sig/activerecord/6.1/active_record/result.rbs +0 -5
- data/examples/rails/known_sig/activerecord/7.0/_active_record_relation.rbs +0 -49
- data/examples/rails/known_sig/activerecord/7.0/_active_record_relation_class_methods.rbs +0 -45
- data/examples/rails/known_sig/activerecord/7.0/active_record/encryption/context.rbs +0 -9
- data/examples/rails/known_sig/activerecord/7.0/active_record/result.rbs +0 -5
- data/examples/rails/known_sig/activesupport/7.0/active_support/callbacks/callback_chain.rbs +0 -9
- data/examples/rails/known_sig/activesupport/7.0/active_support/duration.rbs +0 -4
- data/examples/rails/known_sig/activesupport/7.0/active_support/hash_with_indifferent_access.rbs +0 -6
- data/examples/rails/known_sig/activesupport/7.0/active_support/multibyte/chars.rbs +0 -7
- data/examples/rails/known_sig/activesupport/7.0/active_support/time_with_zone.rbs +0 -5
- data/examples/rails/known_sig/activesupport/7.0/active_support/time_zone.rbs +0 -3
- data/examples/rails/known_sig/activesupport/7.0/date.rbs +0 -6
- data/examples/rails/known_sig/activesupport/7.0/date_and_time/zones.rbs +0 -4
- data/examples/rails/known_sig/activesupport/7.0/hash_with_indifferent_access.rbs +0 -2
- data/examples/rails/known_sig/activesupport/7.0/integer.rbs +0 -9
- data/examples/rails/known_sig/activesupport/7.0/numeric.rbs +0 -15
- data/examples/rails/known_sig/activesupport/7.0/string.rbs +0 -4
- data/examples/rails/known_sig/activesupport/7.0/time.rbs +0 -46
- data/examples/rails/tasks/action_pack.rake +0 -141
- data/examples/rails/tasks/action_view.rake +0 -77
- data/examples/rails/tasks/active_job.rake +0 -99
- data/examples/rails/tasks/active_model.rake +0 -46
- data/examples/rails/tasks/active_record.rake +0 -88
- data/examples/rails/tasks/active_storage.rake +0 -94
- data/examples/rails/tasks/active_support.rake +0 -99
- data/examples/rails/tasks/railties.rake +0 -34
- data/orthoses-rails.gemspec +0 -36
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Orthoses
|
4
|
+
module Rails
|
5
|
+
class Application
|
6
|
+
def initialize(loader)
|
7
|
+
@loader = loader
|
8
|
+
end
|
9
|
+
|
10
|
+
def call
|
11
|
+
loader = @loader
|
12
|
+
Orthoses::Builder.new do
|
13
|
+
use Orthoses::ActiveModel::HasSecurePassword
|
14
|
+
use Orthoses::ActiveRecord::BelongsTo
|
15
|
+
use Orthoses::ActiveRecord::DelegatedType
|
16
|
+
use Orthoses::ActiveRecord::Enum
|
17
|
+
use Orthoses::ActiveRecord::GeneratedAttributeMethods
|
18
|
+
use Orthoses::ActiveRecord::HasMany
|
19
|
+
use Orthoses::ActiveRecord::HasOne
|
20
|
+
use Orthoses::ActiveRecord::Relation
|
21
|
+
use Orthoses::ActiveRecord::Scope
|
22
|
+
|
23
|
+
use Orthoses::ActiveSupport::ClassAttribute
|
24
|
+
use Orthoses::ActiveSupport::Concern
|
25
|
+
use Orthoses::ActiveSupport::Delegation
|
26
|
+
use Orthoses::ActiveSupport::Configurable
|
27
|
+
use Orthoses::ActiveSupport::MattrAccessor
|
28
|
+
reset_runner loader
|
29
|
+
end.call
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/orthoses/rails.rb
CHANGED
@@ -2,9 +2,10 @@
|
|
2
2
|
|
3
3
|
require 'orthoses'
|
4
4
|
|
5
|
-
require_relative "rails/version"
|
6
|
-
|
7
5
|
require_relative 'active_model'
|
8
6
|
require_relative 'active_record'
|
9
7
|
require_relative 'active_support'
|
10
8
|
require_relative 'railties'
|
9
|
+
|
10
|
+
require_relative "rails/application"
|
11
|
+
require_relative "rails/version"
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: orthoses-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ksss
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-07-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: orthoses
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
19
|
+
version: '1.8'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1.
|
26
|
+
version: '1.8'
|
27
27
|
description: Orthoses middleware collection for Ruby on Rails
|
28
28
|
email:
|
29
29
|
- co000ri@gmail.com
|
@@ -34,45 +34,7 @@ files:
|
|
34
34
|
- CODE_OF_CONDUCT.md
|
35
35
|
- LICENSE.txt
|
36
36
|
- README.md
|
37
|
-
-
|
38
|
-
- examples/rails/Gemfile.lock
|
39
|
-
- examples/rails/Rakefile
|
40
|
-
- examples/rails/config/database.yml
|
41
|
-
- examples/rails/config/storage.yml
|
42
|
-
- examples/rails/known_sig/actionpack/7.0/action_controller/metal.rbs
|
43
|
-
- examples/rails/known_sig/activemodel/7.0/active_model/serialization.rbs
|
44
|
-
- examples/rails/known_sig/activemodel/7.0/active_model/validations.rbs
|
45
|
-
- examples/rails/known_sig/activerecord/6.0/_active_record_relation.rbs
|
46
|
-
- examples/rails/known_sig/activerecord/6.0/_active_record_relation_class_methods.rbs
|
47
|
-
- examples/rails/known_sig/activerecord/6.0/active_record/result.rbs
|
48
|
-
- examples/rails/known_sig/activerecord/6.1/_active_record_relation.rbs
|
49
|
-
- examples/rails/known_sig/activerecord/6.1/_active_record_relation_class_methods.rbs
|
50
|
-
- examples/rails/known_sig/activerecord/6.1/active_record/result.rbs
|
51
|
-
- examples/rails/known_sig/activerecord/7.0/_active_record_relation.rbs
|
52
|
-
- examples/rails/known_sig/activerecord/7.0/_active_record_relation_class_methods.rbs
|
53
|
-
- examples/rails/known_sig/activerecord/7.0/active_record/encryption/context.rbs
|
54
|
-
- examples/rails/known_sig/activerecord/7.0/active_record/result.rbs
|
55
|
-
- examples/rails/known_sig/activesupport/7.0/active_support/callbacks/callback_chain.rbs
|
56
|
-
- examples/rails/known_sig/activesupport/7.0/active_support/duration.rbs
|
57
|
-
- examples/rails/known_sig/activesupport/7.0/active_support/hash_with_indifferent_access.rbs
|
58
|
-
- examples/rails/known_sig/activesupport/7.0/active_support/multibyte/chars.rbs
|
59
|
-
- examples/rails/known_sig/activesupport/7.0/active_support/time_with_zone.rbs
|
60
|
-
- examples/rails/known_sig/activesupport/7.0/active_support/time_zone.rbs
|
61
|
-
- examples/rails/known_sig/activesupport/7.0/date.rbs
|
62
|
-
- examples/rails/known_sig/activesupport/7.0/date_and_time/zones.rbs
|
63
|
-
- examples/rails/known_sig/activesupport/7.0/hash_with_indifferent_access.rbs
|
64
|
-
- examples/rails/known_sig/activesupport/7.0/integer.rbs
|
65
|
-
- examples/rails/known_sig/activesupport/7.0/numeric.rbs
|
66
|
-
- examples/rails/known_sig/activesupport/7.0/string.rbs
|
67
|
-
- examples/rails/known_sig/activesupport/7.0/time.rbs
|
68
|
-
- examples/rails/tasks/action_pack.rake
|
69
|
-
- examples/rails/tasks/action_view.rake
|
70
|
-
- examples/rails/tasks/active_job.rake
|
71
|
-
- examples/rails/tasks/active_model.rake
|
72
|
-
- examples/rails/tasks/active_record.rake
|
73
|
-
- examples/rails/tasks/active_storage.rake
|
74
|
-
- examples/rails/tasks/active_support.rake
|
75
|
-
- examples/rails/tasks/railties.rake
|
37
|
+
- lib/generators/orthoses/rails/install_generator.rb
|
76
38
|
- lib/orthoses-rails.rb
|
77
39
|
- lib/orthoses/active_model.rb
|
78
40
|
- lib/orthoses/active_model/has_secure_password.rb
|
@@ -84,6 +46,7 @@ files:
|
|
84
46
|
- lib/orthoses/active_record/has_many.rb
|
85
47
|
- lib/orthoses/active_record/has_one.rb
|
86
48
|
- lib/orthoses/active_record/query_methods.rb
|
49
|
+
- lib/orthoses/active_record/relation.rb
|
87
50
|
- lib/orthoses/active_record/scope.rb
|
88
51
|
- lib/orthoses/active_support.rb
|
89
52
|
- lib/orthoses/active_support/class_attribute.rb
|
@@ -93,10 +56,10 @@ files:
|
|
93
56
|
- lib/orthoses/active_support/mattr_accessor.rb
|
94
57
|
- lib/orthoses/active_support/time_with_zone.rb
|
95
58
|
- lib/orthoses/rails.rb
|
59
|
+
- lib/orthoses/rails/application.rb
|
96
60
|
- lib/orthoses/rails/version.rb
|
97
61
|
- lib/orthoses/railties.rb
|
98
62
|
- lib/orthoses/railties/mixin.rb
|
99
|
-
- orthoses-rails.gemspec
|
100
63
|
- sig/orthoses/rails.rbs
|
101
64
|
homepage: https://github.com/ksss/orthoses-rails
|
102
65
|
licenses:
|
@@ -120,7 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
120
83
|
- !ruby/object:Gem::Version
|
121
84
|
version: '0'
|
122
85
|
requirements: []
|
123
|
-
rubygems_version: 3.
|
86
|
+
rubygems_version: 3.4.10
|
124
87
|
signing_key:
|
125
88
|
specification_version: 4
|
126
89
|
summary: Orthoses middleware collection for Ruby on Rails
|
data/examples/rails/Gemfile
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
source "https://rubygems.org"
|
2
|
-
|
3
|
-
ruby ">= 3.1.0"
|
4
|
-
|
5
|
-
gemspec path: '../../'
|
6
|
-
|
7
|
-
gem "rails", path: "_src"
|
8
|
-
gem "sqlite3"
|
9
|
-
# gem "orthoses", path: "../../../orthoses"
|
10
|
-
|
11
|
-
if RUBY_VERSION >= "3.1"
|
12
|
-
gem "net-smtp", require: false
|
13
|
-
gem "net-imap", require: false
|
14
|
-
gem "net-pop", require: false
|
15
|
-
gem "psych", "~> 3"
|
16
|
-
end
|
data/examples/rails/Gemfile.lock
DELETED
@@ -1,179 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: ../..
|
3
|
-
specs:
|
4
|
-
orthoses-rails (0.7.0)
|
5
|
-
orthoses (~> 1.0)
|
6
|
-
|
7
|
-
PATH
|
8
|
-
remote: _src
|
9
|
-
specs:
|
10
|
-
actioncable (7.0.3.1)
|
11
|
-
actionpack (= 7.0.3.1)
|
12
|
-
activesupport (= 7.0.3.1)
|
13
|
-
nio4r (~> 2.0)
|
14
|
-
websocket-driver (>= 0.6.1)
|
15
|
-
actionmailbox (7.0.3.1)
|
16
|
-
actionpack (= 7.0.3.1)
|
17
|
-
activejob (= 7.0.3.1)
|
18
|
-
activerecord (= 7.0.3.1)
|
19
|
-
activestorage (= 7.0.3.1)
|
20
|
-
activesupport (= 7.0.3.1)
|
21
|
-
mail (>= 2.7.1)
|
22
|
-
net-imap
|
23
|
-
net-pop
|
24
|
-
net-smtp
|
25
|
-
actionmailer (7.0.3.1)
|
26
|
-
actionpack (= 7.0.3.1)
|
27
|
-
actionview (= 7.0.3.1)
|
28
|
-
activejob (= 7.0.3.1)
|
29
|
-
activesupport (= 7.0.3.1)
|
30
|
-
mail (~> 2.5, >= 2.5.4)
|
31
|
-
net-imap
|
32
|
-
net-pop
|
33
|
-
net-smtp
|
34
|
-
rails-dom-testing (~> 2.0)
|
35
|
-
actionpack (7.0.3.1)
|
36
|
-
actionview (= 7.0.3.1)
|
37
|
-
activesupport (= 7.0.3.1)
|
38
|
-
rack (~> 2.0, >= 2.2.0)
|
39
|
-
rack-test (>= 0.6.3)
|
40
|
-
rails-dom-testing (~> 2.0)
|
41
|
-
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
42
|
-
actiontext (7.0.3.1)
|
43
|
-
actionpack (= 7.0.3.1)
|
44
|
-
activerecord (= 7.0.3.1)
|
45
|
-
activestorage (= 7.0.3.1)
|
46
|
-
activesupport (= 7.0.3.1)
|
47
|
-
globalid (>= 0.6.0)
|
48
|
-
nokogiri (>= 1.8.5)
|
49
|
-
actionview (7.0.3.1)
|
50
|
-
activesupport (= 7.0.3.1)
|
51
|
-
builder (~> 3.1)
|
52
|
-
erubi (~> 1.4)
|
53
|
-
rails-dom-testing (~> 2.0)
|
54
|
-
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
55
|
-
activejob (7.0.3.1)
|
56
|
-
activesupport (= 7.0.3.1)
|
57
|
-
globalid (>= 0.3.6)
|
58
|
-
activemodel (7.0.3.1)
|
59
|
-
activesupport (= 7.0.3.1)
|
60
|
-
activerecord (7.0.3.1)
|
61
|
-
activemodel (= 7.0.3.1)
|
62
|
-
activesupport (= 7.0.3.1)
|
63
|
-
activestorage (7.0.3.1)
|
64
|
-
actionpack (= 7.0.3.1)
|
65
|
-
activejob (= 7.0.3.1)
|
66
|
-
activerecord (= 7.0.3.1)
|
67
|
-
activesupport (= 7.0.3.1)
|
68
|
-
marcel (~> 1.0)
|
69
|
-
mini_mime (>= 1.1.0)
|
70
|
-
activesupport (7.0.3.1)
|
71
|
-
concurrent-ruby (~> 1.0, >= 1.0.2)
|
72
|
-
i18n (>= 1.6, < 2)
|
73
|
-
minitest (>= 5.1)
|
74
|
-
tzinfo (~> 2.0)
|
75
|
-
rails (7.0.3.1)
|
76
|
-
actioncable (= 7.0.3.1)
|
77
|
-
actionmailbox (= 7.0.3.1)
|
78
|
-
actionmailer (= 7.0.3.1)
|
79
|
-
actionpack (= 7.0.3.1)
|
80
|
-
actiontext (= 7.0.3.1)
|
81
|
-
actionview (= 7.0.3.1)
|
82
|
-
activejob (= 7.0.3.1)
|
83
|
-
activemodel (= 7.0.3.1)
|
84
|
-
activerecord (= 7.0.3.1)
|
85
|
-
activestorage (= 7.0.3.1)
|
86
|
-
activesupport (= 7.0.3.1)
|
87
|
-
bundler (>= 1.15.0)
|
88
|
-
railties (= 7.0.3.1)
|
89
|
-
railties (7.0.3.1)
|
90
|
-
actionpack (= 7.0.3.1)
|
91
|
-
activesupport (= 7.0.3.1)
|
92
|
-
method_source
|
93
|
-
rake (>= 12.2)
|
94
|
-
thor (~> 1.0)
|
95
|
-
zeitwerk (~> 2.5)
|
96
|
-
|
97
|
-
GEM
|
98
|
-
remote: https://rubygems.org/
|
99
|
-
specs:
|
100
|
-
builder (3.2.4)
|
101
|
-
concurrent-ruby (1.1.10)
|
102
|
-
crass (1.0.6)
|
103
|
-
digest (3.1.0)
|
104
|
-
erubi (1.11.0)
|
105
|
-
globalid (1.0.0)
|
106
|
-
activesupport (>= 5.0)
|
107
|
-
i18n (1.12.0)
|
108
|
-
concurrent-ruby (~> 1.0)
|
109
|
-
loofah (2.18.0)
|
110
|
-
crass (~> 1.0.2)
|
111
|
-
nokogiri (>= 1.5.9)
|
112
|
-
mail (2.7.1)
|
113
|
-
mini_mime (>= 0.1.1)
|
114
|
-
marcel (1.0.2)
|
115
|
-
method_source (1.0.0)
|
116
|
-
mini_mime (1.1.2)
|
117
|
-
mini_portile2 (2.8.0)
|
118
|
-
minitest (5.16.3)
|
119
|
-
net-imap (0.2.3)
|
120
|
-
digest
|
121
|
-
net-protocol
|
122
|
-
strscan
|
123
|
-
net-pop (0.1.1)
|
124
|
-
digest
|
125
|
-
net-protocol
|
126
|
-
timeout
|
127
|
-
net-protocol (0.1.3)
|
128
|
-
timeout
|
129
|
-
net-smtp (0.3.1)
|
130
|
-
digest
|
131
|
-
net-protocol
|
132
|
-
timeout
|
133
|
-
nio4r (2.5.8)
|
134
|
-
nokogiri (1.13.8)
|
135
|
-
mini_portile2 (~> 2.8.0)
|
136
|
-
racc (~> 1.4)
|
137
|
-
orthoses (1.0.0)
|
138
|
-
rbs (~> 2.0)
|
139
|
-
psych (3.3.3)
|
140
|
-
racc (1.6.0)
|
141
|
-
rack (2.2.4)
|
142
|
-
rack-test (2.0.2)
|
143
|
-
rack (>= 1.3)
|
144
|
-
rails-dom-testing (2.0.3)
|
145
|
-
activesupport (>= 4.2.0)
|
146
|
-
nokogiri (>= 1.6)
|
147
|
-
rails-html-sanitizer (1.4.3)
|
148
|
-
loofah (~> 2.3)
|
149
|
-
rake (13.0.6)
|
150
|
-
rbs (2.6.0)
|
151
|
-
sqlite3 (1.5.0)
|
152
|
-
mini_portile2 (~> 2.8.0)
|
153
|
-
strscan (3.0.4)
|
154
|
-
thor (1.2.1)
|
155
|
-
timeout (0.3.0)
|
156
|
-
tzinfo (2.0.5)
|
157
|
-
concurrent-ruby (~> 1.0)
|
158
|
-
websocket-driver (0.7.5)
|
159
|
-
websocket-extensions (>= 0.1.0)
|
160
|
-
websocket-extensions (0.1.5)
|
161
|
-
zeitwerk (2.6.0)
|
162
|
-
|
163
|
-
PLATFORMS
|
164
|
-
arm64-darwin-21
|
165
|
-
|
166
|
-
DEPENDENCIES
|
167
|
-
net-imap
|
168
|
-
net-pop
|
169
|
-
net-smtp
|
170
|
-
orthoses-rails!
|
171
|
-
psych (~> 3)
|
172
|
-
rails!
|
173
|
-
sqlite3
|
174
|
-
|
175
|
-
RUBY VERSION
|
176
|
-
ruby 3.1.1p18
|
177
|
-
|
178
|
-
BUNDLED WITH
|
179
|
-
2.3.16
|
data/examples/rails/Rakefile
DELETED
@@ -1,328 +0,0 @@
|
|
1
|
-
## run `$ rake`
|
2
|
-
|
3
|
-
def switch_branch(name)
|
4
|
-
cd "_src" do
|
5
|
-
sh "git switch #{name}"
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
def generate(out_dir, version)
|
10
|
-
require 'orthoses'
|
11
|
-
require 'orthoses-rails'
|
12
|
-
require 'openssl'
|
13
|
-
require 'cgi'
|
14
|
-
require 'uri'
|
15
|
-
|
16
|
-
Orthoses.logger.level = :error
|
17
|
-
|
18
|
-
loader = -> () {
|
19
|
-
require "active_support/all"
|
20
|
-
require "active_record"
|
21
|
-
require "active_job"
|
22
|
-
require "active_model"
|
23
|
-
require "active_storage/engine"
|
24
|
-
require "action_dispatch"
|
25
|
-
begin
|
26
|
-
require "action_mailbox"
|
27
|
-
require "action_text"
|
28
|
-
rescue LoadError
|
29
|
-
end
|
30
|
-
require "action_mailer"
|
31
|
-
require "action_pack"
|
32
|
-
require "action_view"
|
33
|
-
|
34
|
-
roots = [
|
35
|
-
ActiveSupport,
|
36
|
-
ActiveModel,
|
37
|
-
ActiveJob,
|
38
|
-
ActiveRecord,
|
39
|
-
ActiveStorage,
|
40
|
-
ActionDispatch,
|
41
|
-
ActionMailer,
|
42
|
-
ActionView,
|
43
|
-
]
|
44
|
-
roots << ActionMailbox if defined?(ActionMailbox)
|
45
|
-
roots << ActionText if defined?(ActionText)
|
46
|
-
|
47
|
-
roots.each do |rails_mod|
|
48
|
-
rails_mod.eager_load!
|
49
|
-
Orthoses::Utils.each_const_recursive(rails_mod, on_error: -> (e) {
|
50
|
-
Orthoses.logger.warn "skip load const by [#{e.root}][#{e.const}](#{e.error.class})#{e.error.message}"
|
51
|
-
})
|
52
|
-
v = rails_mod.respond_to?(:version) ? rails_mod.version : nil
|
53
|
-
puts "loaded #{rails_mod}: v#{v}"
|
54
|
-
end
|
55
|
-
eval(<<~RUBY)
|
56
|
-
module Dummy
|
57
|
-
class Application < Rails::Application
|
58
|
-
config.load_defaults #{version.to_s}
|
59
|
-
config.active_storage.service = :local
|
60
|
-
end
|
61
|
-
end
|
62
|
-
RUBY
|
63
|
-
ENV['RAILS_ENV'] = 'development'
|
64
|
-
Rails.application.initialize!
|
65
|
-
}
|
66
|
-
Orthoses::Builder.new do
|
67
|
-
use Orthoses::CreateFileByName,
|
68
|
-
base_dir: "#{out_dir}/#{version}",
|
69
|
-
header: "# !!! GENERATED CODE !!!\n# Please see generators/rails-generator"
|
70
|
-
use Orthoses::Filter do |name, content|
|
71
|
-
# OMG, both ERB and Erb are exist...
|
72
|
-
return false if name.start_with?("Erb")
|
73
|
-
|
74
|
-
# ArgumentError
|
75
|
-
return false if name.start_with?("I18n::Tests")
|
76
|
-
|
77
|
-
# FIXME: too hard
|
78
|
-
return false if name.include?("::Generators")
|
79
|
-
|
80
|
-
# Ignore known sig
|
81
|
-
return false if Orthoses::Utils.rbs_defined_class?(name, collection: true) && content.body.empty?
|
82
|
-
|
83
|
-
true
|
84
|
-
end
|
85
|
-
use Orthoses::Constant,
|
86
|
-
strict: false,
|
87
|
-
if: -> (current, const, _val, _rbs) {
|
88
|
-
!Orthoses::Utils.rbs_defined_const?("#{current}::#{const}", collection: true)
|
89
|
-
},
|
90
|
-
on_error: -> (e) {
|
91
|
-
Orthoses.logger.warn "[Orthoses::Constant] skip load const by #{e.root}[::#{e.const}] (#{e.error.class}) #{e.error.message}"
|
92
|
-
}
|
93
|
-
use Orthoses::ActiveSupport::ClassAttribute
|
94
|
-
use Orthoses::ActiveSupport::Delegation
|
95
|
-
use Orthoses::ActiveSupport::MattrAccessor
|
96
|
-
use Orthoses::ActiveSupport::TimeWithZone
|
97
|
-
use Orthoses::ActiveRecord::QueryMethods
|
98
|
-
use Orthoses::LoadRBS,
|
99
|
-
paths: -> { Orthoses::PathHelper.best_version_paths(::ActiveRecord::VERSION::STRING, "known_sig/activerecord") }
|
100
|
-
use Orthoses::LoadRBS,
|
101
|
-
paths: -> { Orthoses::PathHelper.best_version_paths(::ActiveModel::VERSION::STRING, "known_sig/activemodel") }
|
102
|
-
use Orthoses::LoadRBS,
|
103
|
-
paths: -> { Orthoses::PathHelper.best_version_paths(::ActiveSupport::VERSION::STRING, "known_sig/activesupport") }
|
104
|
-
# # require in method
|
105
|
-
use Orthoses::Tap do |store|
|
106
|
-
store.delete("DummyERB")
|
107
|
-
store.delete("DummyCompiler")
|
108
|
-
end
|
109
|
-
# see activerecord/lib/active_record/migration/compatibility.rb
|
110
|
-
use Orthoses::Tap do |store|
|
111
|
-
# TODO: make middleware
|
112
|
-
if defined?(ActiveRecord::Migration::Compatibility::V7_0)
|
113
|
-
store["ActiveRecord::Migration::Compatibility::V6_1"].header = nil
|
114
|
-
store["ActiveRecord::Migration::Compatibility::V7_0"].header = "class ActiveRecord::Migration::Compatibility::V7_0 < ActiveRecord::Migration::Current"
|
115
|
-
elsif defined?(ActiveRecord::Migration::Compatibility::V6_1)
|
116
|
-
store["ActiveRecord::Migration::Compatibility::V6_0"].header = nil
|
117
|
-
store["ActiveRecord::Migration::Compatibility::V6_1"].header = "class ActiveRecord::Migration::Compatibility::V6_1 < ActiveRecord::Migration::Current"
|
118
|
-
elsif defined?(ActiveRecord::Migration::Compatibility::V6_0)
|
119
|
-
store["ActiveRecord::Migration::Compatibility::V5_2"].header = nil
|
120
|
-
store["ActiveRecord::Migration::Compatibility::V6_0"].header = "class ActiveRecord::Migration::Compatibility::V6_0 < ActiveRecord::Migration::Current"
|
121
|
-
elsif defined?(ActiveRecord::Migration::Compatibility::V5_2)
|
122
|
-
store["ActiveRecord::Migration::Compatibility::V5_1"].header = nil
|
123
|
-
store["ActiveRecord::Migration::Compatibility::V5_2"].header = "class ActiveRecord::Migration::Compatibility::V5_2 < ActiveRecord::Migration::Current"
|
124
|
-
end
|
125
|
-
end
|
126
|
-
# class_eval in #each
|
127
|
-
# see activerecord/lib/active_record/migration/command_recorder.rb
|
128
|
-
use Orthoses::Tap do |store|
|
129
|
-
content = store["ActiveRecord::Migration::CommandRecorder"]
|
130
|
-
ActiveRecord::Migration::CommandRecorder::ReversibleAndIrreversibleMethods.each do |method|
|
131
|
-
content << "def #{method}: (*untyped args) ?{ () -> void } -> untyped"
|
132
|
-
end
|
133
|
-
end
|
134
|
-
# class_eval in #each
|
135
|
-
# see activerecord/lib/active_record/migration/command_recorder.rb
|
136
|
-
use Orthoses::Tap do |store|
|
137
|
-
content = store["ActiveRecord::Migration::CommandRecorder::StraightReversions"]
|
138
|
-
{
|
139
|
-
execute_block: :execute_block,
|
140
|
-
create_table: :drop_table,
|
141
|
-
create_join_table: :drop_join_table,
|
142
|
-
add_column: :remove_column,
|
143
|
-
add_index: :remove_index,
|
144
|
-
add_timestamps: :remove_timestamps,
|
145
|
-
add_reference: :remove_reference,
|
146
|
-
add_foreign_key: :remove_foreign_key,
|
147
|
-
add_check_constraint: :remove_check_constraint,
|
148
|
-
enable_extension: :disable_extension
|
149
|
-
}.each do |cmd, inv|
|
150
|
-
[[inv, cmd], [cmd, inv]].uniq.each do |method, inverse|
|
151
|
-
content << "def invert_#{method}: (untyped args) ?{ () -> void } -> [Symbol, untyped, Proc]"
|
152
|
-
end
|
153
|
-
end
|
154
|
-
end
|
155
|
-
# singleton_class.class_eval in included
|
156
|
-
use Orthoses::Tap do |store|
|
157
|
-
store["ActiveRecord::ModelSchema"].body.tap do |body|
|
158
|
-
body.delete("alias _inheritance_column= inheritance_column=")
|
159
|
-
body.delete("alias inheritance_column= real_inheritance_column=")
|
160
|
-
end
|
161
|
-
end
|
162
|
-
# alias in included block
|
163
|
-
use Orthoses::Tap do |store|
|
164
|
-
store["ActiveRecord::ConnectionAdapters::ColumnMethods"].body.tap do |body|
|
165
|
-
body.delete("alias blob binary")
|
166
|
-
body.delete("alias numeric decimal")
|
167
|
-
end
|
168
|
-
end
|
169
|
-
# > Use async_exec instead of exec_params on pg versions before 1.1
|
170
|
-
use Orthoses::Tap do |store|
|
171
|
-
store["PG::Connection"].body.clear
|
172
|
-
end
|
173
|
-
# Entrust to auto super class
|
174
|
-
use Orthoses::Tap do |store|
|
175
|
-
store.each do |_, content|
|
176
|
-
if content.header&.include?(" < Type::")
|
177
|
-
content.header.sub!(/ < Type::(.*)/, " < ::ActiveModel::Type::\\1")
|
178
|
-
end
|
179
|
-
# delegate to auto_header
|
180
|
-
if content.header&.start_with?("class Arel")
|
181
|
-
content.header = nil
|
182
|
-
end
|
183
|
-
end
|
184
|
-
store["ActionView::Helpers::Tags::CollectionRadioButtons::RadioButtonBuilder"].header = nil
|
185
|
-
store["ActionView::Helpers::Tags::CollectionCheckBoxes::CheckBoxBuilder"].header = nil
|
186
|
-
store["ActionView::SyntaxErrorInTemplate"].header = nil
|
187
|
-
# MigrationProxy cannot resolve name since class alias.
|
188
|
-
store["ActiveRecord::NullMigration"].header = nil
|
189
|
-
end
|
190
|
-
use Orthoses::DelegateClass
|
191
|
-
use Orthoses::Attribute
|
192
|
-
use Orthoses::Railties::Mixin, callback: -> (railties_mixin) {
|
193
|
-
Orthoses::CreateFileByName.new(
|
194
|
-
->{ railties_mixin },
|
195
|
-
base_dir: "#{out_dir}/#{version}/railties_mixin",
|
196
|
-
header: "# !!! GENERATED CODE !!!\n# Please see generators/rails-generator"
|
197
|
-
).call
|
198
|
-
}
|
199
|
-
use Orthoses::Mixin,
|
200
|
-
if: -> (base_mod, how, mod) {
|
201
|
-
mod != Enumerable # TODO
|
202
|
-
}
|
203
|
-
use Orthoses::RBSPrototypeRB,
|
204
|
-
paths: Dir.glob('_src/{railties,action{cable,mailbox,mailer,pack,text,view},active{job,model,record,storage,support}}/{app,lib}/**/*.rb'),
|
205
|
-
constant_filter: -> (member) { false },
|
206
|
-
mixin_filter: -> (member) { false },
|
207
|
-
attribute_filter: -> (member) { false }
|
208
|
-
use Orthoses::Autoload
|
209
|
-
run loader
|
210
|
-
end.call
|
211
|
-
|
212
|
-
# $ cat out/7.0/**/*.rbs | wc
|
213
|
-
# 69763 339342 2606899
|
214
|
-
end
|
215
|
-
|
216
|
-
def generate_test_script(gem:, version:, export:, stdlib_dependencies:, gem_dependencies:, rails_dependencies:)
|
217
|
-
Pathname(export).join('_scripts').tap(&:mkdir).join('test').write(<<~SHELL)
|
218
|
-
#!/usr/bin/env bash
|
219
|
-
|
220
|
-
# !!! GENERATED CODE !!!
|
221
|
-
# Please see generators/rails-generator
|
222
|
-
|
223
|
-
# set -eou => Exit command with non-zero status code, Output logs of every command executed, Treat unset variables as an error when substituting.
|
224
|
-
set -eou pipefail
|
225
|
-
# Internal Field Separator - Linux shell variable
|
226
|
-
IFS=$'\n\t'
|
227
|
-
# Print shell input lines
|
228
|
-
set -v
|
229
|
-
|
230
|
-
# Set RBS_DIR variable to change directory to execute type checks using `steep check`
|
231
|
-
RBS_DIR=$(cd $(dirname $0)/..; pwd)
|
232
|
-
# Set REPO_DIR variable to validate RBS files added to the corresponding folder
|
233
|
-
REPO_DIR=$(cd $(dirname $0)/../../..; pwd)
|
234
|
-
# Validate RBS files, using the bundler environment present
|
235
|
-
bundle exec rbs --repo=$REPO_DIR #{stdlib_dependencies.map{"-r #{_1}"}.join(" ")} \\
|
236
|
-
#{gem_dependencies.map{"-r #{_1}"}.join(" ")} \\
|
237
|
-
-r #{gem} validate --silent
|
238
|
-
|
239
|
-
cd ${RBS_DIR}/_test
|
240
|
-
# Run type checks
|
241
|
-
bundle exec steep check
|
242
|
-
SHELL
|
243
|
-
|
244
|
-
sh "chmod +x #{Pathname(export).join('_scripts').join('test')}"
|
245
|
-
|
246
|
-
Pathname(export).join('_test').tap(&:mkdir).join('Steepfile').write(<<~RUBY)
|
247
|
-
# !!! GENERATED CODE !!!
|
248
|
-
# Please see generators/rails-generator
|
249
|
-
|
250
|
-
D = Steep::Diagnostic
|
251
|
-
|
252
|
-
target :test do
|
253
|
-
signature "."
|
254
|
-
check "."
|
255
|
-
|
256
|
-
repo_path "../../../"
|
257
|
-
|
258
|
-
#{stdlib_dependencies.map{" library \"#{_1}\""}.join("\n")}
|
259
|
-
#{gem_dependencies.map{" library \"#{_1}\""}.join("\n")}
|
260
|
-
|
261
|
-
library "#{gem}:#{version}"
|
262
|
-
|
263
|
-
configure_code_diagnostics(D::Ruby.all_error)
|
264
|
-
end
|
265
|
-
RUBY
|
266
|
-
end
|
267
|
-
|
268
|
-
def generate_manifest(export:, stdlib_dependencies:)
|
269
|
-
Pathname(export).join('manifest.yaml').write(<<~YAML)
|
270
|
-
dependencies:
|
271
|
-
#{stdlib_dependencies.map{"- name: #{_1}"}.join("\n ")}
|
272
|
-
YAML
|
273
|
-
end
|
274
|
-
|
275
|
-
VERSIONS = %w[
|
276
|
-
6.0
|
277
|
-
6.1
|
278
|
-
7.0
|
279
|
-
]
|
280
|
-
Object.private_constant :VERSIONS
|
281
|
-
|
282
|
-
tasks = Dir["tasks/*"]
|
283
|
-
tasks.each do |task|
|
284
|
-
load task
|
285
|
-
end
|
286
|
-
GEMS = tasks.map { File.basename(_1).sub(/\.rake/, '') }
|
287
|
-
Object.private_constant :GEMS
|
288
|
-
|
289
|
-
task :clean do
|
290
|
-
FileUtils.rm_rf("out")
|
291
|
-
end
|
292
|
-
|
293
|
-
VERSIONS.each do |version|
|
294
|
-
namespace version do
|
295
|
-
desc "run all version=#{version}"
|
296
|
-
task :all => [
|
297
|
-
:generate,
|
298
|
-
:export,
|
299
|
-
:validate,
|
300
|
-
# :install,
|
301
|
-
]
|
302
|
-
|
303
|
-
desc "run export version=#{version}"
|
304
|
-
task :export => GEMS.map{"#{version}:#{_1}:export"}
|
305
|
-
|
306
|
-
desc "run validate version=#{version}"
|
307
|
-
task :validate => GEMS.map{"#{version}:#{_1}:validate"}
|
308
|
-
|
309
|
-
desc "run install version=#{version}"
|
310
|
-
task :install => GEMS.map{"#{version}:#{_1}:install"}
|
311
|
-
|
312
|
-
desc "generate version=#{version}"
|
313
|
-
task :generate do |t|
|
314
|
-
switch_branch("#{version.tr('.', '-')}-stable")
|
315
|
-
sh "bundle install"
|
316
|
-
sh "bundle exec rake #{t.name}_exec"
|
317
|
-
end
|
318
|
-
|
319
|
-
task :generate_exec do
|
320
|
-
generate("out", version)
|
321
|
-
end
|
322
|
-
end
|
323
|
-
end
|
324
|
-
|
325
|
-
task default: [
|
326
|
-
:clean,
|
327
|
-
*(VERSIONS.map {"#{_1}:all"})
|
328
|
-
]
|