orthoses-rails 0.6.0 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +24 -23
- data/examples/rails/{gemfiles/Gemfile_6_0 → Gemfile} +4 -4
- data/examples/rails/{gemfiles/Gemfile_7_0.lock → Gemfile.lock} +83 -76
- data/examples/rails/Rakefile +64 -51
- data/examples/rails/known_sig/actionpack/7.0/action_controller/metal.rbs +4 -0
- data/examples/rails/known_sig/activemodel/7.0/active_model/serialization.rbs +4 -0
- data/examples/rails/known_sig/activemodel/7.0/active_model/validations.rbs +4 -0
- data/examples/rails/known_sig/activerecord/6.0/_active_record_relation.rbs +49 -0
- data/examples/rails/known_sig/activerecord/6.0/_active_record_relation_class_methods.rbs +45 -0
- data/examples/rails/known_sig/activerecord/6.0/active_record/result.rbs +5 -0
- data/examples/rails/known_sig/activerecord/6.1/_active_record_relation.rbs +49 -0
- data/examples/rails/known_sig/activerecord/6.1/_active_record_relation_class_methods.rbs +45 -0
- data/examples/rails/known_sig/activerecord/6.1/active_record/result.rbs +5 -0
- data/examples/rails/known_sig/activerecord/7.0/_active_record_relation.rbs +49 -0
- data/examples/rails/known_sig/activerecord/7.0/_active_record_relation_class_methods.rbs +45 -0
- data/examples/rails/known_sig/activerecord/7.0/active_record/encryption/context.rbs +9 -0
- data/examples/rails/known_sig/activerecord/7.0/active_record/result.rbs +5 -0
- data/examples/rails/known_sig/activesupport/7.0/active_support/callbacks/callback_chain.rbs +9 -0
- data/examples/rails/known_sig/activesupport/7.0/active_support/duration.rbs +4 -0
- data/examples/rails/known_sig/activesupport/7.0/active_support/hash_with_indifferent_access.rbs +6 -0
- data/examples/rails/known_sig/activesupport/7.0/active_support/multibyte/chars.rbs +7 -0
- data/examples/rails/known_sig/activesupport/7.0/active_support/time_with_zone.rbs +5 -0
- data/examples/rails/known_sig/activesupport/7.0/active_support/time_zone.rbs +3 -0
- data/examples/rails/known_sig/activesupport/7.0/date.rbs +6 -0
- data/examples/rails/known_sig/activesupport/7.0/date_and_time/zones.rbs +4 -0
- data/examples/rails/known_sig/activesupport/7.0/hash_with_indifferent_access.rbs +2 -0
- data/examples/rails/known_sig/activesupport/7.0/integer.rbs +9 -0
- data/examples/rails/known_sig/activesupport/7.0/numeric.rbs +15 -0
- data/examples/rails/known_sig/activesupport/7.0/string.rbs +4 -0
- data/examples/rails/known_sig/activesupport/7.0/time.rbs +46 -0
- data/examples/rails/tasks/action_pack.rake +141 -0
- data/examples/rails/tasks/action_view.rake +77 -0
- data/examples/rails/tasks/active_job.rake +5 -1
- data/examples/rails/tasks/active_model.rake +1 -1
- data/examples/rails/tasks/active_record.rake +7 -2
- data/examples/rails/tasks/active_storage.rake +1 -1
- data/examples/rails/tasks/active_support.rake +7 -0
- data/examples/rails/tasks/railties.rake +34 -0
- data/lib/orthoses/active_model/has_secure_password.rb +2 -10
- data/lib/orthoses/active_record/delegated_type.rb +2 -8
- data/lib/orthoses/active_record/enum.rb +2 -2
- data/lib/orthoses/active_record/generated_attribute_methods.rb +1 -0
- data/lib/orthoses/active_record/scope.rb +2 -2
- data/lib/orthoses/active_support/class_attribute.rb +3 -10
- data/lib/orthoses/active_support/concern.rb +46 -0
- data/lib/orthoses/active_support/configurable.rb +3 -2
- data/lib/orthoses/active_support/delegation.rb +6 -14
- data/lib/orthoses/active_support/mattr_accessor.rb +4 -12
- data/lib/orthoses/active_support.rb +1 -15
- data/lib/orthoses/rails/version.rb +1 -1
- data/lib/orthoses/rails.rb +1 -0
- data/lib/orthoses/railties/mixin.rb +107 -0
- data/lib/orthoses/railties.rb +3 -0
- data/orthoses-rails.gemspec +1 -1
- metadata +40 -12
- data/examples/rails/gemfiles/Gemfile_6_0.lock +0 -172
- data/examples/rails/gemfiles/Gemfile_6_1 +0 -15
- data/examples/rails/gemfiles/Gemfile_6_1.lock +0 -173
- data/examples/rails/gemfiles/Gemfile_7_0 +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 70f9def2ba0ccd5b1537ee8aa3ee68c2700e99d0f134d313069939cc1db3277d
|
4
|
+
data.tar.gz: 922e2e304b3aa7f5cd34cb215ea3656c6a4c79c34875b7fd7ed691743230ea10
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 42f23b91ba796e225541f7da52cc74916a53ef584f1711d95457b0cc239441146678c4ebbb5a271a52710d928f55edba2d5032bec56a4fe9f9b0e47bf7e44c6a
|
7
|
+
data.tar.gz: 1f9c63c9d2b9b8f11d820a27ef660d61cb727d3a3b3b644afa93fb3b7bdb48dbd150ca7ab96f636d02fb330e2de27c902862e04b89a514f20d5e3d51d5172dc8
|
data/README.md
CHANGED
@@ -48,34 +48,35 @@ If bundler is not being used to manage dependencies, install the gem by executin
|
|
48
48
|
|
49
49
|
## Usage
|
50
50
|
|
51
|
+
Build your Rake task for RBS generation.
|
52
|
+
|
51
53
|
```rb
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
54
|
+
task :rbs_generate => :environment do
|
55
|
+
Orthoses::Builder.new do
|
56
|
+
use Orthoses::CreateFileByName
|
57
|
+
base_dir: Rails.root.join("sig/out"),
|
58
|
+
header: "# !!! GENERATED CODE !!!"
|
59
|
+
use Orthoses::Filter do |name, _content|
|
58
60
|
path, _lineno = Object.const_source_location(name)
|
59
61
|
return false unless path
|
60
62
|
%r{app/models}.match?(path)
|
63
|
+
end
|
64
|
+
use YourCustom::Middleware
|
65
|
+
use Orthoses::ActiveModel::HasSecurePassword
|
66
|
+
use Orthoses::ActiveRecord::BelongsTo
|
67
|
+
use Orthoses::ActiveRecord::HasMany
|
68
|
+
use Orthoses::ActiveRecord::HasOne
|
69
|
+
use Orthoses::ActiveSupport::ClassAttribute
|
70
|
+
use Orthoses::ActiveSupport::MattrAccessor
|
71
|
+
use Orthoses::Mixin
|
72
|
+
use Orthoses::Constant, strict: false
|
73
|
+
use Orthoses::ObjectSpaceAll
|
74
|
+
use Orthoses::Autoload
|
75
|
+
run -> {
|
76
|
+
Rails.application.eager_load!
|
61
77
|
}
|
62
|
-
|
63
|
-
|
64
|
-
use Orthoses::ActiveRecord::BelongsTo
|
65
|
-
use Orthoses::ActiveRecord::HasMany
|
66
|
-
use Orthoses::ActiveRecord::HasOne
|
67
|
-
use Orthoses::ActiveSupport::ClassAttribute
|
68
|
-
use Orthoses::ActiveSupport::MattrAccessor
|
69
|
-
use Orthoses::Mixin
|
70
|
-
use Orthoses::Constant, strict: false
|
71
|
-
use Orthoses::ObjectSpaceAll
|
72
|
-
use Orthoses::Autoload
|
73
|
-
run -> () {
|
74
|
-
Rake::Task[:environment].invoke
|
75
|
-
Rails.application.eager_load!
|
76
|
-
Orthoses::Utils.unautoload!
|
77
|
-
}
|
78
|
-
end.call
|
78
|
+
end.call
|
79
|
+
end
|
79
80
|
```
|
80
81
|
|
81
82
|
## Development
|
@@ -1,12 +1,12 @@
|
|
1
1
|
source "https://rubygems.org"
|
2
2
|
|
3
|
-
ruby "
|
3
|
+
ruby ">= 3.1.0"
|
4
4
|
|
5
|
-
gemspec path: '
|
5
|
+
gemspec path: '../../'
|
6
6
|
|
7
|
-
gem "rails",
|
7
|
+
gem "rails", path: "_src"
|
8
8
|
gem "sqlite3"
|
9
|
-
# gem "orthoses", path: "
|
9
|
+
# gem "orthoses", path: "../../../orthoses"
|
10
10
|
|
11
11
|
if RUBY_VERSION >= "3.1"
|
12
12
|
gem "net-smtp", require: false
|
@@ -1,85 +1,110 @@
|
|
1
1
|
PATH
|
2
|
-
remote:
|
2
|
+
remote: ../..
|
3
3
|
specs:
|
4
|
-
orthoses-rails (0.
|
5
|
-
orthoses (
|
4
|
+
orthoses-rails (0.7.0)
|
5
|
+
orthoses (~> 1.0)
|
6
6
|
|
7
|
-
|
8
|
-
remote:
|
7
|
+
PATH
|
8
|
+
remote: _src
|
9
9
|
specs:
|
10
|
-
actioncable (7.0.3)
|
11
|
-
actionpack (= 7.0.3)
|
12
|
-
activesupport (= 7.0.3)
|
10
|
+
actioncable (7.0.3.1)
|
11
|
+
actionpack (= 7.0.3.1)
|
12
|
+
activesupport (= 7.0.3.1)
|
13
13
|
nio4r (~> 2.0)
|
14
14
|
websocket-driver (>= 0.6.1)
|
15
|
-
actionmailbox (7.0.3)
|
16
|
-
actionpack (= 7.0.3)
|
17
|
-
activejob (= 7.0.3)
|
18
|
-
activerecord (= 7.0.3)
|
19
|
-
activestorage (= 7.0.3)
|
20
|
-
activesupport (= 7.0.3)
|
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
21
|
mail (>= 2.7.1)
|
22
22
|
net-imap
|
23
23
|
net-pop
|
24
24
|
net-smtp
|
25
|
-
actionmailer (7.0.3)
|
26
|
-
actionpack (= 7.0.3)
|
27
|
-
actionview (= 7.0.3)
|
28
|
-
activejob (= 7.0.3)
|
29
|
-
activesupport (= 7.0.3)
|
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
30
|
mail (~> 2.5, >= 2.5.4)
|
31
31
|
net-imap
|
32
32
|
net-pop
|
33
33
|
net-smtp
|
34
34
|
rails-dom-testing (~> 2.0)
|
35
|
-
actionpack (7.0.3)
|
36
|
-
actionview (= 7.0.3)
|
37
|
-
activesupport (= 7.0.3)
|
35
|
+
actionpack (7.0.3.1)
|
36
|
+
actionview (= 7.0.3.1)
|
37
|
+
activesupport (= 7.0.3.1)
|
38
38
|
rack (~> 2.0, >= 2.2.0)
|
39
39
|
rack-test (>= 0.6.3)
|
40
40
|
rails-dom-testing (~> 2.0)
|
41
41
|
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
42
|
-
actiontext (7.0.3)
|
43
|
-
actionpack (= 7.0.3)
|
44
|
-
activerecord (= 7.0.3)
|
45
|
-
activestorage (= 7.0.3)
|
46
|
-
activesupport (= 7.0.3)
|
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
47
|
globalid (>= 0.6.0)
|
48
48
|
nokogiri (>= 1.8.5)
|
49
|
-
actionview (7.0.3)
|
50
|
-
activesupport (= 7.0.3)
|
49
|
+
actionview (7.0.3.1)
|
50
|
+
activesupport (= 7.0.3.1)
|
51
51
|
builder (~> 3.1)
|
52
52
|
erubi (~> 1.4)
|
53
53
|
rails-dom-testing (~> 2.0)
|
54
54
|
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
55
|
-
activejob (7.0.3)
|
56
|
-
activesupport (= 7.0.3)
|
55
|
+
activejob (7.0.3.1)
|
56
|
+
activesupport (= 7.0.3.1)
|
57
57
|
globalid (>= 0.3.6)
|
58
|
-
activemodel (7.0.3)
|
59
|
-
activesupport (= 7.0.3)
|
60
|
-
activerecord (7.0.3)
|
61
|
-
activemodel (= 7.0.3)
|
62
|
-
activesupport (= 7.0.3)
|
63
|
-
activestorage (7.0.3)
|
64
|
-
actionpack (= 7.0.3)
|
65
|
-
activejob (= 7.0.3)
|
66
|
-
activerecord (= 7.0.3)
|
67
|
-
activesupport (= 7.0.3)
|
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
68
|
marcel (~> 1.0)
|
69
69
|
mini_mime (>= 1.1.0)
|
70
|
-
activesupport (7.0.3)
|
70
|
+
activesupport (7.0.3.1)
|
71
71
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
72
72
|
i18n (>= 1.6, < 2)
|
73
73
|
minitest (>= 5.1)
|
74
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:
|
75
100
|
builder (3.2.4)
|
76
101
|
concurrent-ruby (1.1.10)
|
77
102
|
crass (1.0.6)
|
78
103
|
digest (3.1.0)
|
79
|
-
erubi (1.
|
104
|
+
erubi (1.11.0)
|
80
105
|
globalid (1.0.0)
|
81
106
|
activesupport (>= 5.0)
|
82
|
-
i18n (1.
|
107
|
+
i18n (1.12.0)
|
83
108
|
concurrent-ruby (~> 1.0)
|
84
109
|
loofah (2.18.0)
|
85
110
|
crass (~> 1.0.2)
|
@@ -90,7 +115,7 @@ GEM
|
|
90
115
|
method_source (1.0.0)
|
91
116
|
mini_mime (1.1.2)
|
92
117
|
mini_portile2 (2.8.0)
|
93
|
-
minitest (5.16.
|
118
|
+
minitest (5.16.3)
|
94
119
|
net-imap (0.2.3)
|
95
120
|
digest
|
96
121
|
net-protocol
|
@@ -106,48 +131,29 @@ GEM
|
|
106
131
|
net-protocol
|
107
132
|
timeout
|
108
133
|
nio4r (2.5.8)
|
109
|
-
nokogiri (1.13.
|
134
|
+
nokogiri (1.13.8)
|
110
135
|
mini_portile2 (~> 2.8.0)
|
111
136
|
racc (~> 1.4)
|
112
|
-
orthoses (0.
|
137
|
+
orthoses (1.0.0)
|
113
138
|
rbs (~> 2.0)
|
139
|
+
psych (3.3.3)
|
114
140
|
racc (1.6.0)
|
115
|
-
rack (2.2.
|
116
|
-
rack-test (2.0.
|
141
|
+
rack (2.2.4)
|
142
|
+
rack-test (2.0.2)
|
117
143
|
rack (>= 1.3)
|
118
|
-
rails (7.0.3)
|
119
|
-
actioncable (= 7.0.3)
|
120
|
-
actionmailbox (= 7.0.3)
|
121
|
-
actionmailer (= 7.0.3)
|
122
|
-
actionpack (= 7.0.3)
|
123
|
-
actiontext (= 7.0.3)
|
124
|
-
actionview (= 7.0.3)
|
125
|
-
activejob (= 7.0.3)
|
126
|
-
activemodel (= 7.0.3)
|
127
|
-
activerecord (= 7.0.3)
|
128
|
-
activestorage (= 7.0.3)
|
129
|
-
activesupport (= 7.0.3)
|
130
|
-
bundler (>= 1.15.0)
|
131
|
-
railties (= 7.0.3)
|
132
144
|
rails-dom-testing (2.0.3)
|
133
145
|
activesupport (>= 4.2.0)
|
134
146
|
nokogiri (>= 1.6)
|
135
147
|
rails-html-sanitizer (1.4.3)
|
136
148
|
loofah (~> 2.3)
|
137
|
-
railties (7.0.3)
|
138
|
-
actionpack (= 7.0.3)
|
139
|
-
activesupport (= 7.0.3)
|
140
|
-
method_source
|
141
|
-
rake (>= 12.2)
|
142
|
-
thor (~> 1.0)
|
143
|
-
zeitwerk (~> 2.5)
|
144
149
|
rake (13.0.6)
|
145
150
|
rbs (2.6.0)
|
146
|
-
sqlite3 (1.
|
147
|
-
|
151
|
+
sqlite3 (1.5.0)
|
152
|
+
mini_portile2 (~> 2.8.0)
|
153
|
+
strscan (3.0.4)
|
148
154
|
thor (1.2.1)
|
149
155
|
timeout (0.3.0)
|
150
|
-
tzinfo (2.0.
|
156
|
+
tzinfo (2.0.5)
|
151
157
|
concurrent-ruby (~> 1.0)
|
152
158
|
websocket-driver (0.7.5)
|
153
159
|
websocket-extensions (>= 0.1.0)
|
@@ -155,18 +161,19 @@ GEM
|
|
155
161
|
zeitwerk (2.6.0)
|
156
162
|
|
157
163
|
PLATFORMS
|
158
|
-
|
164
|
+
arm64-darwin-21
|
159
165
|
|
160
166
|
DEPENDENCIES
|
161
167
|
net-imap
|
162
168
|
net-pop
|
163
169
|
net-smtp
|
164
170
|
orthoses-rails!
|
165
|
-
|
171
|
+
psych (~> 3)
|
172
|
+
rails!
|
166
173
|
sqlite3
|
167
174
|
|
168
175
|
RUBY VERSION
|
169
176
|
ruby 3.1.1p18
|
170
177
|
|
171
178
|
BUNDLED WITH
|
172
|
-
2.3.
|
179
|
+
2.3.16
|
data/examples/rails/Rakefile
CHANGED
@@ -22,24 +22,29 @@ def generate(out_dir, version)
|
|
22
22
|
require "active_model"
|
23
23
|
require "active_storage/engine"
|
24
24
|
require "action_dispatch"
|
25
|
-
|
25
|
+
begin
|
26
|
+
require "action_mailbox"
|
27
|
+
require "action_text"
|
28
|
+
rescue LoadError
|
29
|
+
end
|
26
30
|
require "action_mailer"
|
27
31
|
require "action_pack"
|
28
|
-
require "action_text"
|
29
32
|
require "action_view"
|
30
33
|
|
31
|
-
[
|
34
|
+
roots = [
|
32
35
|
ActiveSupport,
|
33
36
|
ActiveModel,
|
34
37
|
ActiveJob,
|
35
38
|
ActiveRecord,
|
36
39
|
ActiveStorage,
|
37
40
|
ActionDispatch,
|
38
|
-
ActionMailbox,
|
39
41
|
ActionMailer,
|
40
|
-
ActionText,
|
41
42
|
ActionView,
|
42
|
-
]
|
43
|
+
]
|
44
|
+
roots << ActionMailbox if defined?(ActionMailbox)
|
45
|
+
roots << ActionText if defined?(ActionText)
|
46
|
+
|
47
|
+
roots.each do |rails_mod|
|
43
48
|
rails_mod.eager_load!
|
44
49
|
Orthoses::Utils.each_const_recursive(rails_mod, on_error: -> (e) {
|
45
50
|
Orthoses.logger.warn "skip load const by [#{e.root}][#{e.const}](#{e.error.class})#{e.error.message}"
|
@@ -62,23 +67,21 @@ def generate(out_dir, version)
|
|
62
67
|
use Orthoses::CreateFileByName,
|
63
68
|
base_dir: "#{out_dir}/#{version}",
|
64
69
|
header: "# !!! GENERATED CODE !!!\n# Please see generators/rails-generator"
|
65
|
-
use Orthoses::
|
66
|
-
|
67
|
-
if
|
68
|
-
# OMG, both ERB and Erb are exist...
|
69
|
-
return false if name.start_with?("Erb")
|
70
|
+
use Orthoses::Filter do |name, content|
|
71
|
+
# OMG, both ERB and Erb are exist...
|
72
|
+
return false if name.start_with?("Erb")
|
70
73
|
|
71
|
-
|
72
|
-
|
74
|
+
# ArgumentError
|
75
|
+
return false if name.start_with?("I18n::Tests")
|
73
76
|
|
74
|
-
|
75
|
-
|
77
|
+
# FIXME: too hard
|
78
|
+
return false if name.include?("::Generators")
|
76
79
|
|
77
|
-
|
78
|
-
|
80
|
+
# Ignore known sig
|
81
|
+
return false if Orthoses::Utils.rbs_defined_class?(name, collection: true) && content.body.empty?
|
79
82
|
|
80
|
-
|
81
|
-
|
83
|
+
true
|
84
|
+
end
|
82
85
|
use Orthoses::Constant,
|
83
86
|
strict: false,
|
84
87
|
if: -> (current, const, _val, _rbs) {
|
@@ -87,9 +90,10 @@ def generate(out_dir, version)
|
|
87
90
|
on_error: -> (e) {
|
88
91
|
Orthoses.logger.warn "[Orthoses::Constant] skip load const by #{e.root}[::#{e.const}] (#{e.error.class}) #{e.error.message}"
|
89
92
|
}
|
90
|
-
Orthoses::ActiveSupport
|
91
|
-
|
92
|
-
|
93
|
+
use Orthoses::ActiveSupport::ClassAttribute
|
94
|
+
use Orthoses::ActiveSupport::Delegation
|
95
|
+
use Orthoses::ActiveSupport::MattrAccessor
|
96
|
+
use Orthoses::ActiveSupport::TimeWithZone
|
93
97
|
use Orthoses::ActiveRecord::QueryMethods
|
94
98
|
use Orthoses::LoadRBS,
|
95
99
|
paths: -> { Orthoses::PathHelper.best_version_paths(::ActiveRecord::VERSION::STRING, "known_sig/activerecord") }
|
@@ -114,6 +118,9 @@ def generate(out_dir, version)
|
|
114
118
|
elsif defined?(ActiveRecord::Migration::Compatibility::V6_0)
|
115
119
|
store["ActiveRecord::Migration::Compatibility::V5_2"].header = nil
|
116
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"
|
117
124
|
end
|
118
125
|
end
|
119
126
|
# class_eval in #each
|
@@ -182,6 +189,13 @@ def generate(out_dir, version)
|
|
182
189
|
end
|
183
190
|
use Orthoses::DelegateClass
|
184
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
|
+
}
|
185
199
|
use Orthoses::Mixin,
|
186
200
|
if: -> (base_mod, how, mod) {
|
187
201
|
mod != Enumerable # TODO
|
@@ -251,6 +265,13 @@ def generate_test_script(gem:, version:, export:, stdlib_dependencies:, gem_depe
|
|
251
265
|
RUBY
|
252
266
|
end
|
253
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
|
+
|
254
275
|
VERSIONS = %w[
|
255
276
|
6.0
|
256
277
|
6.1
|
@@ -258,57 +279,49 @@ VERSIONS = %w[
|
|
258
279
|
]
|
259
280
|
Object.private_constant :VERSIONS
|
260
281
|
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
active_storage
|
267
|
-
]
|
282
|
+
tasks = Dir["tasks/*"]
|
283
|
+
tasks.each do |task|
|
284
|
+
load task
|
285
|
+
end
|
286
|
+
GEMS = tasks.map { File.basename(_1).sub(/\.rake/, '') }
|
268
287
|
Object.private_constant :GEMS
|
269
288
|
|
270
289
|
task :clean do
|
271
290
|
FileUtils.rm_rf("out")
|
272
291
|
end
|
273
292
|
|
274
|
-
namespace :bundle do
|
275
|
-
task :update do
|
276
|
-
VERSIONS.each do |version|
|
277
|
-
sh "BUNDLE_GEMFILE=gemfiles/Gemfile_#{version.tr('.', '_')} bundle update"
|
278
|
-
end
|
279
|
-
end
|
280
|
-
end
|
281
|
-
|
282
293
|
VERSIONS.each do |version|
|
283
294
|
namespace version do
|
284
295
|
desc "run all version=#{version}"
|
285
296
|
task :all => [
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
#
|
297
|
+
:generate,
|
298
|
+
:export,
|
299
|
+
:validate,
|
300
|
+
# :install,
|
290
301
|
]
|
291
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
|
+
|
292
312
|
desc "generate version=#{version}"
|
293
313
|
task :generate do |t|
|
294
|
-
|
295
|
-
sh "
|
296
|
-
sh "
|
314
|
+
switch_branch("#{version.tr('.', '-')}-stable")
|
315
|
+
sh "bundle install"
|
316
|
+
sh "bundle exec rake #{t.name}_exec"
|
297
317
|
end
|
298
318
|
|
299
319
|
task :generate_exec do
|
300
|
-
switch_branch("#{version.tr('.', '-')}-stable")
|
301
320
|
generate("out", version)
|
302
321
|
end
|
303
322
|
end
|
304
323
|
end
|
305
324
|
|
306
|
-
load 'tasks/active_job.rake'
|
307
|
-
load 'tasks/active_model.rake'
|
308
|
-
load 'tasks/active_record.rake'
|
309
|
-
load 'tasks/active_storage.rake'
|
310
|
-
load 'tasks/active_support.rake'
|
311
|
-
|
312
325
|
task default: [
|
313
326
|
:clean,
|
314
327
|
*(VERSIONS.map {"#{_1}:all"})
|
@@ -0,0 +1,49 @@
|
|
1
|
+
interface _ActiveRecord_Relation[Model, PrimaryKey]
|
2
|
+
def all: () -> self
|
3
|
+
def ids: () -> Array[PrimaryKey]
|
4
|
+
def none: () -> self
|
5
|
+
def pluck: (Symbol | String column) -> Array[untyped]
|
6
|
+
| (*Symbol | String columns) -> Array[Array[untyped]]
|
7
|
+
def where: (*untyped) -> self
|
8
|
+
def not: (*untyped) -> self
|
9
|
+
def exists?: (*untyped) -> bool
|
10
|
+
def order: (*untyped) -> self
|
11
|
+
def group: (*Symbol | String) -> untyped
|
12
|
+
def distinct: () -> self
|
13
|
+
def or: (self) -> self
|
14
|
+
def merge: (self) -> self
|
15
|
+
def joins: (*String | Symbol) -> self
|
16
|
+
| (Hash[untyped, untyped]) -> self
|
17
|
+
def left_joins: (*String | Symbol) -> self
|
18
|
+
| (Hash[untyped, untyped]) -> self
|
19
|
+
def left_outer_joins: (*String | Symbol) -> self
|
20
|
+
| (Hash[untyped, untyped]) -> self
|
21
|
+
def includes: (*String | Symbol) -> self
|
22
|
+
| (Hash[untyped, untyped]) -> self
|
23
|
+
def eager_load: (*String | Symbol) -> self
|
24
|
+
| (Hash[untyped, untyped]) -> self
|
25
|
+
def preload: (*String | Symbol) -> self
|
26
|
+
| (Hash[untyped, untyped]) -> self
|
27
|
+
def find_by: (*untyped) -> Model?
|
28
|
+
def find_by!: (*untyped) -> Model
|
29
|
+
def find: (PrimaryKey id) -> Model
|
30
|
+
| (Array[PrimaryKey]) -> Array[Model]
|
31
|
+
| (*PrimaryKey) -> Array[Model]
|
32
|
+
| () { (Model) -> boolish } -> Model?
|
33
|
+
def first: () -> Model?
|
34
|
+
| (Integer count) -> Array[Model]
|
35
|
+
def first!: () -> Model
|
36
|
+
def last: () -> Model?
|
37
|
+
| (Integer count) -> Array[Model]
|
38
|
+
def last!: () -> Model
|
39
|
+
def limit: (Integer | Arel::Nodes::SqlLiteral | nil) -> self
|
40
|
+
def limit!: (Integer | Arel::Nodes::SqlLiteral | nil) -> self
|
41
|
+
def find_each: (?batch_size: Integer, ?start: Integer, ?finish: Integer, ?error_on_ignore: bool) { (Model) -> void } -> nil
|
42
|
+
def find_in_batches: (?batch_size: Integer, ?start: Integer, ?finish: Integer, ?error_on_ignore: bool) { (self) -> void } -> nil
|
43
|
+
def destroy_all: () -> untyped
|
44
|
+
def delete_all: () -> untyped
|
45
|
+
def update_all: (*untyped) -> untyped
|
46
|
+
def each: () { (Model) -> void } -> self
|
47
|
+
def select: (*Symbol | String) -> self
|
48
|
+
| () { (Model) -> boolish } -> Array[Model]
|
49
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
interface _ActiveRecord_Relation_ClassMethods[Model, Relation, PrimaryKey]
|
2
|
+
def all: () -> Relation
|
3
|
+
def ids: () -> Array[PrimaryKey]
|
4
|
+
def none: () -> Relation
|
5
|
+
def pluck: (Symbol | String column) -> Array[untyped]
|
6
|
+
| (*Symbol | String columns) -> Array[Array[untyped]]
|
7
|
+
def where: (*untyped) -> Relation
|
8
|
+
def exists?: (*untyped) -> bool
|
9
|
+
def order: (*untyped) -> Relation
|
10
|
+
def group: (*Symbol | String) -> untyped
|
11
|
+
def distinct: () -> self
|
12
|
+
def or: (Relation) -> Relation
|
13
|
+
def merge: (Relation) -> Relation
|
14
|
+
def joins: (*String | Symbol) -> self
|
15
|
+
| (Hash[untyped, untyped]) -> self
|
16
|
+
def left_joins: (*String | Symbol) -> self
|
17
|
+
| (Hash[untyped, untyped]) -> self
|
18
|
+
def left_outer_joins: (*String | Symbol) -> self
|
19
|
+
| (Hash[untyped, untyped]) -> self
|
20
|
+
def includes: (*String | Symbol) -> self
|
21
|
+
| (Hash[untyped, untyped]) -> self
|
22
|
+
def eager_load: (*String | Symbol) -> self
|
23
|
+
| (Hash[untyped, untyped]) -> self
|
24
|
+
def preload: (*String | Symbol) -> self
|
25
|
+
| (Hash[untyped, untyped]) -> self
|
26
|
+
def find_by: (*untyped) -> Model?
|
27
|
+
def find_by!: (*untyped) -> Model
|
28
|
+
def find: (PrimaryKey id) -> Model
|
29
|
+
| (Array[PrimaryKey]) -> Array[Model]
|
30
|
+
| (*PrimaryKey) -> Array[Model]
|
31
|
+
def first: () -> Model?
|
32
|
+
| (Integer count) -> Array[Model]
|
33
|
+
def first!: () -> Model
|
34
|
+
def last: () -> Model?
|
35
|
+
| (Integer count) -> Array[Model]
|
36
|
+
def last!: () -> Model
|
37
|
+
def limit: (Integer | Arel::Nodes::SqlLiteral | nil) -> Relation
|
38
|
+
def find_each: (?batch_size: Integer, ?start: Integer, ?finish: Integer, ?error_on_ignore: bool) { (Model) -> void } -> nil
|
39
|
+
def find_in_batches: (?batch_size: Integer, ?start: Integer, ?finish: Integer, ?error_on_ignore: bool) { (self) -> void } -> nil
|
40
|
+
def destroy_all: () -> untyped
|
41
|
+
def delete_all: () -> untyped
|
42
|
+
def update_all: (*untyped) -> untyped
|
43
|
+
def select: (*Symbol | String) -> Relation
|
44
|
+
| () { (Model) -> boolish } -> Array[Model]
|
45
|
+
end
|