sorbet-rails 0.6.0 → 0.6.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +69 -24
- data/bin/sorbet +6 -0
- data/lib/sorbet-rails/helper_rbi_formatter.rb +1 -1
- data/lib/sorbet-rails/mailer_rbi_formatter.rb +1 -1
- data/lib/sorbet-rails/model_plugins/active_record_attribute.rb +35 -24
- data/lib/sorbet-rails/model_rbi_formatter.rb +5 -1
- data/lib/sorbet-rails/model_utils.rb +17 -1
- data/lib/sorbet-rails/railtie.rb +10 -0
- data/lib/sorbet-rails/routes_rbi_formatter.rb +1 -1
- data/lib/sorbet-rails/sorbet_utils.rb +120 -25
- data/sorbet-rails.gemspec +5 -3
- data/spec/generators/rails-template.rb +16 -0
- data/spec/model_rbi_formatter_spec.rb +7 -0
- data/spec/sorbet_utils_spec.rb +25 -13
- data/spec/support/v5.0/Gemfile.lock +13 -11
- data/spec/support/v5.0/app/mailers/hogwarts_acceptance_mailer.rb +17 -1
- data/spec/support/v5.1/Gemfile.lock +13 -11
- data/spec/support/v5.1/app/mailers/hogwarts_acceptance_mailer.rb +17 -1
- data/spec/support/v5.2/Gemfile.lock +13 -11
- data/spec/support/v5.2/app/mailers/hogwarts_acceptance_mailer.rb +17 -1
- data/spec/support/v6.0/Gemfile.lock +14 -12
- data/spec/support/v6.0/app/mailers/application_mailer.rb +1 -1
- data/spec/support/v6.0/app/mailers/hogwarts_acceptance_mailer.rb +17 -1
- data/spec/test_data/v5.0/expected_application_mailer.rbi +1 -1
- data/spec/test_data/v5.0/expected_daily_prophet_mailer.rbi +1 -1
- data/spec/test_data/v5.0/expected_helpers.rbi +1 -1
- data/spec/test_data/v5.0/expected_helpers_with_application_and_devise_helpers.rbi +1 -1
- data/spec/test_data/v5.0/expected_hogwarts_acceptance_mailer.rbi +11 -1
- data/spec/test_data/v5.0/expected_internal_metadata.rbi +5 -4
- data/spec/test_data/v5.0/expected_potion.rbi +2 -1
- data/spec/test_data/v5.0/expected_robe.rbi +4 -3
- data/spec/test_data/v5.0/expected_routes.rbi +1 -1
- data/spec/test_data/v5.0/expected_schema_migration.rbi +2 -1
- data/spec/test_data/v5.0/expected_school.rbi +4 -3
- data/spec/test_data/v5.0/expected_spell_book.rbi +5 -4
- data/spec/test_data/v5.0/expected_squib.rbi +10 -9
- data/spec/test_data/v5.0/expected_wand.rbi +11 -10
- data/spec/test_data/v5.0/expected_wizard.rbi +10 -9
- data/spec/test_data/v5.0/expected_wizard_wo_spellbook.rbi +10 -9
- data/spec/test_data/v5.1/expected_application_mailer.rbi +1 -1
- data/spec/test_data/v5.1/expected_daily_prophet_mailer.rbi +1 -1
- data/spec/test_data/v5.1/expected_helpers.rbi +1 -1
- data/spec/test_data/v5.1/expected_helpers_with_application_and_devise_helpers.rbi +1 -1
- data/spec/test_data/v5.1/expected_hogwarts_acceptance_mailer.rbi +11 -1
- data/spec/test_data/v5.1/expected_internal_metadata.rbi +5 -4
- data/spec/test_data/v5.1/expected_potion.rbi +2 -1
- data/spec/test_data/v5.1/expected_robe.rbi +4 -3
- data/spec/test_data/v5.1/expected_routes.rbi +1 -1
- data/spec/test_data/v5.1/expected_schema_migration.rbi +2 -1
- data/spec/test_data/v5.1/expected_school.rbi +4 -3
- data/spec/test_data/v5.1/expected_spell_book.rbi +5 -4
- data/spec/test_data/v5.1/expected_squib.rbi +10 -9
- data/spec/test_data/v5.1/expected_wand.rbi +11 -10
- data/spec/test_data/v5.1/expected_wizard.rbi +10 -9
- data/spec/test_data/v5.1/expected_wizard_wo_spellbook.rbi +10 -9
- data/spec/test_data/v5.2/expected_application_mailer.rbi +1 -1
- data/spec/test_data/v5.2/expected_attachment.rbi +2 -1
- data/spec/test_data/v5.2/expected_blob.rbi +2 -1
- data/spec/test_data/v5.2/expected_daily_prophet_mailer.rbi +1 -1
- data/spec/test_data/v5.2/expected_helpers.rbi +1 -1
- data/spec/test_data/v5.2/expected_helpers_with_application_and_devise_helpers.rbi +1 -1
- data/spec/test_data/v5.2/expected_hogwarts_acceptance_mailer.rbi +11 -1
- data/spec/test_data/v5.2/expected_internal_metadata.rbi +5 -4
- data/spec/test_data/v5.2/expected_potion.rbi +2 -1
- data/spec/test_data/v5.2/expected_robe.rbi +4 -3
- data/spec/test_data/v5.2/expected_routes.rbi +1 -1
- data/spec/test_data/v5.2/expected_schema_migration.rbi +2 -1
- data/spec/test_data/v5.2/expected_school.rbi +4 -3
- data/spec/test_data/v5.2/expected_spell_book.rbi +5 -4
- data/spec/test_data/v5.2/expected_squib.rbi +10 -9
- data/spec/test_data/v5.2/expected_wand.rbi +11 -10
- data/spec/test_data/v5.2/expected_wizard.rbi +10 -9
- data/spec/test_data/v5.2/expected_wizard_wo_spellbook.rbi +10 -9
- data/spec/test_data/v6.0/expected_application_mailer.rbi +1 -1
- data/spec/test_data/v6.0/expected_attachment.rbi +2 -1
- data/spec/test_data/v6.0/expected_blob.rbi +2 -1
- data/spec/test_data/v6.0/expected_daily_prophet_mailer.rbi +1 -1
- data/spec/test_data/v6.0/expected_helpers.rbi +1 -1
- data/spec/test_data/v6.0/expected_helpers_with_application_and_devise_helpers.rbi +1 -1
- data/spec/test_data/v6.0/expected_hogwarts_acceptance_mailer.rbi +11 -1
- data/spec/test_data/v6.0/expected_internal_metadata.rbi +5 -4
- data/spec/test_data/v6.0/expected_potion.rbi +2 -1
- data/spec/test_data/v6.0/expected_robe.rbi +4 -3
- data/spec/test_data/v6.0/expected_routes.rbi +1 -1
- data/spec/test_data/v6.0/expected_schema_migration.rbi +2 -1
- data/spec/test_data/v6.0/expected_school.rbi +4 -3
- data/spec/test_data/v6.0/expected_spell_book.rbi +5 -4
- data/spec/test_data/v6.0/expected_squib.rbi +10 -9
- data/spec/test_data/v6.0/expected_wand.rbi +11 -10
- data/spec/test_data/v6.0/expected_wizard.rbi +10 -9
- data/spec/test_data/v6.0/expected_wizard_wo_spellbook.rbi +10 -9
- metadata +33 -4
data/sorbet-rails.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = %q{sorbet-rails}
|
3
|
-
s.version = "0.6.
|
3
|
+
s.version = "0.6.1"
|
4
4
|
s.date = %q{2019-04-18}
|
5
5
|
s.summary = %q{Set of tools to make Sorbet work with Rails seamlessly.}
|
6
6
|
s.authors = ["Chan Zuckerberg Initiative"]
|
@@ -16,8 +16,10 @@ Gem::Specification.new do |s|
|
|
16
16
|
end
|
17
17
|
|
18
18
|
s.add_dependency 'parlour', '~> 2.0'
|
19
|
-
s.add_dependency 'sorbet', '>= 0.5'
|
20
|
-
s.add_dependency 'sorbet-coerce', '>= 0.2.
|
19
|
+
s.add_dependency 'sorbet-runtime', '>= 0.5'
|
20
|
+
s.add_dependency 'sorbet-coerce', '>= 0.2.4'
|
21
|
+
s.add_dependency 'method_source', '>= 0.9.2'
|
22
|
+
s.add_dependency 'parser', '>= 2.7'
|
21
23
|
|
22
24
|
# Development
|
23
25
|
s.add_development_dependency 'rspec', '~> 3.8', '>= 3.8'
|
@@ -340,6 +340,22 @@ def create_mailers
|
|
340
340
|
# TODO: mail acceptance letter to student
|
341
341
|
end
|
342
342
|
|
343
|
+
sig {
|
344
|
+
params(
|
345
|
+
teacher: Wizard,
|
346
|
+
note: String,
|
347
|
+
student: Wizard,
|
348
|
+
special: T::Boolean,
|
349
|
+
).void
|
350
|
+
}
|
351
|
+
def notify_teacher(
|
352
|
+
teacher,
|
353
|
+
note=nil,
|
354
|
+
student:,
|
355
|
+
special: false
|
356
|
+
) # TODO: let the teacher know when a students accepted offer
|
357
|
+
end
|
358
|
+
|
343
359
|
def notify_retry(student)
|
344
360
|
# TODO: send more owls!!
|
345
361
|
end
|
@@ -53,4 +53,11 @@ RSpec.describe SorbetRails::ModelRbiFormatter do
|
|
53
53
|
)
|
54
54
|
end
|
55
55
|
end
|
56
|
+
|
57
|
+
it 'creates Model::RelationType alias at runtime' do
|
58
|
+
ActiveRecord::Base.descendants.each do |model|
|
59
|
+
expect(model.const_defined?("RelationType")).to be(true)
|
60
|
+
expect(model.const_get("RelationType")).to be_a(T::Private::Types::TypeAlias)
|
61
|
+
end
|
62
|
+
end
|
56
63
|
end
|
data/spec/sorbet_utils_spec.rb
CHANGED
@@ -34,8 +34,10 @@ class SorbetUtilsExampleClass
|
|
34
34
|
|
35
35
|
def method_without_sig(p1, p2, *p3, p4:, **p5, &p6); end
|
36
36
|
|
37
|
-
sig { params(p1: String, p2: String, p3: Integer).void }
|
38
|
-
def
|
37
|
+
sig { params(p1: String, p2: String, p3: Integer, p4: Integer).void }
|
38
|
+
def method_with_default_with_sig(p1, p2='abc', p3:, p4: 123); end
|
39
|
+
|
40
|
+
def method_with_default(p1, p2='abc', p3:, p4: 123); end
|
39
41
|
|
40
42
|
def method_with_missing_args_name(p1, *); end
|
41
43
|
|
@@ -131,17 +133,27 @@ RSpec.describe SorbetRails::SorbetUtils do
|
|
131
133
|
])
|
132
134
|
end
|
133
135
|
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
136
|
+
it 'works when method arguments have default' do
|
137
|
+
method_def = SorbetUtilsExampleClass.instance_method(:method_with_default)
|
138
|
+
parameters = SorbetRails::SorbetUtils.parameters_from_method_def(method_def)
|
139
|
+
expect(parameters).to match_array([
|
140
|
+
Parameter.new('p1', type: 'T.untyped'),
|
141
|
+
Parameter.new('p2', type: 'T.untyped', default: "'abc'"),
|
142
|
+
Parameter.new('p3:', type: 'T.untyped'),
|
143
|
+
Parameter.new('p4:', type: 'T.untyped', default: '123'),
|
144
|
+
])
|
145
|
+
end
|
146
|
+
|
147
|
+
it 'works when method arguments have default and method has sig' do
|
148
|
+
method_def = SorbetUtilsExampleClass.instance_method(:method_with_default_with_sig)
|
149
|
+
parameters = SorbetRails::SorbetUtils.parameters_from_method_def(method_def)
|
150
|
+
expect(parameters).to match_array([
|
151
|
+
Parameter.new('p1', type: 'String'),
|
152
|
+
Parameter.new('p2', type: 'String', default: "'abc'"),
|
153
|
+
Parameter.new('p3:', type: 'Integer'),
|
154
|
+
Parameter.new('p4:', type: 'Integer', default: '123'),
|
155
|
+
])
|
156
|
+
end
|
145
157
|
|
146
158
|
it 'works when method args doesnt have name' do
|
147
159
|
method_def = SorbetUtilsExampleClass.instance_method(:method_with_missing_args_name)
|
@@ -1,10 +1,12 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ../../..
|
3
3
|
specs:
|
4
|
-
sorbet-rails (0.6.
|
4
|
+
sorbet-rails (0.6.1)
|
5
|
+
method_source (>= 0.9.2)
|
5
6
|
parlour (~> 2.0)
|
6
|
-
|
7
|
-
sorbet-coerce (>= 0.2.
|
7
|
+
parser (>= 2.7)
|
8
|
+
sorbet-coerce (>= 0.2.4)
|
9
|
+
sorbet-runtime (>= 0.5)
|
8
10
|
|
9
11
|
GEM
|
10
12
|
remote: https://rubygems.org/
|
@@ -50,7 +52,7 @@ GEM
|
|
50
52
|
ast (2.4.0)
|
51
53
|
builder (3.2.4)
|
52
54
|
byebug (11.1.1)
|
53
|
-
commander (4.5.
|
55
|
+
commander (4.5.2)
|
54
56
|
highline (~> 2.0.0)
|
55
57
|
concurrent-ruby (1.1.6)
|
56
58
|
crass (1.0.6)
|
@@ -72,14 +74,14 @@ GEM
|
|
72
74
|
mini_portile2 (2.4.0)
|
73
75
|
minitest (5.14.0)
|
74
76
|
nio4r (2.5.2)
|
75
|
-
nokogiri (1.10.
|
77
|
+
nokogiri (1.10.9)
|
76
78
|
mini_portile2 (~> 2.4.0)
|
77
79
|
parlour (2.0.0)
|
78
80
|
commander (~> 4.5)
|
79
81
|
parser
|
80
82
|
rainbow (~> 3.0)
|
81
83
|
sorbet-runtime (>= 0.5)
|
82
|
-
parser (2.7.0.
|
84
|
+
parser (2.7.0.4)
|
83
85
|
ast (~> 2.4.0)
|
84
86
|
polyfill (1.8.0)
|
85
87
|
puma (3.12.4)
|
@@ -112,15 +114,15 @@ GEM
|
|
112
114
|
rainbow (3.0.0)
|
113
115
|
rake (13.0.1)
|
114
116
|
safe_type (1.1.1)
|
115
|
-
sorbet (0.5.
|
116
|
-
sorbet-static (= 0.5.
|
117
|
-
sorbet-coerce (0.2.
|
117
|
+
sorbet (0.5.5420)
|
118
|
+
sorbet-static (= 0.5.5420)
|
119
|
+
sorbet-coerce (0.2.4)
|
118
120
|
polyfill (~> 1.8)
|
119
121
|
safe_type (~> 1.1, >= 1.1.1)
|
120
122
|
sorbet (>= 0.4.4704)
|
121
123
|
sorbet-runtime (>= 0.4.4704)
|
122
|
-
sorbet-runtime (0.5.
|
123
|
-
sorbet-static (0.5.
|
124
|
+
sorbet-runtime (0.5.5420)
|
125
|
+
sorbet-static (0.5.5420-universal-darwin-14)
|
124
126
|
sprockets (4.0.0)
|
125
127
|
concurrent-ruby (~> 1.0)
|
126
128
|
rack (> 1, < 3)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# typed:
|
1
|
+
# typed: false
|
2
2
|
class HogwartsAcceptanceMailer < ApplicationMailer
|
3
3
|
extend T::Sig
|
4
4
|
|
@@ -7,6 +7,22 @@ class HogwartsAcceptanceMailer < ApplicationMailer
|
|
7
7
|
# TODO: mail acceptance letter to student
|
8
8
|
end
|
9
9
|
|
10
|
+
sig {
|
11
|
+
params(
|
12
|
+
teacher: Wizard,
|
13
|
+
note: String,
|
14
|
+
student: Wizard,
|
15
|
+
special: T::Boolean,
|
16
|
+
).void
|
17
|
+
}
|
18
|
+
def notify_teacher(
|
19
|
+
teacher,
|
20
|
+
note=nil,
|
21
|
+
student:,
|
22
|
+
special: false
|
23
|
+
) # TODO: let the teacher know when a students accepted offer
|
24
|
+
end
|
25
|
+
|
10
26
|
def notify_retry(student)
|
11
27
|
# TODO: send more owls!!
|
12
28
|
end
|
@@ -1,10 +1,12 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ../../..
|
3
3
|
specs:
|
4
|
-
sorbet-rails (0.6.
|
4
|
+
sorbet-rails (0.6.1)
|
5
|
+
method_source (>= 0.9.2)
|
5
6
|
parlour (~> 2.0)
|
6
|
-
|
7
|
-
sorbet-coerce (>= 0.2.
|
7
|
+
parser (>= 2.7)
|
8
|
+
sorbet-coerce (>= 0.2.4)
|
9
|
+
sorbet-runtime (>= 0.5)
|
8
10
|
|
9
11
|
GEM
|
10
12
|
remote: https://rubygems.org/
|
@@ -51,7 +53,7 @@ GEM
|
|
51
53
|
bindex (0.8.1)
|
52
54
|
builder (3.2.4)
|
53
55
|
byebug (11.1.1)
|
54
|
-
commander (4.5.
|
56
|
+
commander (4.5.2)
|
55
57
|
highline (~> 2.0.0)
|
56
58
|
concurrent-ruby (1.1.6)
|
57
59
|
crass (1.0.6)
|
@@ -73,14 +75,14 @@ GEM
|
|
73
75
|
mini_portile2 (2.4.0)
|
74
76
|
minitest (5.14.0)
|
75
77
|
nio4r (2.5.2)
|
76
|
-
nokogiri (1.10.
|
78
|
+
nokogiri (1.10.9)
|
77
79
|
mini_portile2 (~> 2.4.0)
|
78
80
|
parlour (2.0.0)
|
79
81
|
commander (~> 4.5)
|
80
82
|
parser
|
81
83
|
rainbow (~> 3.0)
|
82
84
|
sorbet-runtime (>= 0.5)
|
83
|
-
parser (2.7.0.
|
85
|
+
parser (2.7.0.4)
|
84
86
|
ast (~> 2.4.0)
|
85
87
|
polyfill (1.8.0)
|
86
88
|
puma (3.12.4)
|
@@ -113,15 +115,15 @@ GEM
|
|
113
115
|
rainbow (3.0.0)
|
114
116
|
rake (13.0.1)
|
115
117
|
safe_type (1.1.1)
|
116
|
-
sorbet (0.5.
|
117
|
-
sorbet-static (= 0.5.
|
118
|
-
sorbet-coerce (0.2.
|
118
|
+
sorbet (0.5.5420)
|
119
|
+
sorbet-static (= 0.5.5420)
|
120
|
+
sorbet-coerce (0.2.4)
|
119
121
|
polyfill (~> 1.8)
|
120
122
|
safe_type (~> 1.1, >= 1.1.1)
|
121
123
|
sorbet (>= 0.4.4704)
|
122
124
|
sorbet-runtime (>= 0.4.4704)
|
123
|
-
sorbet-runtime (0.5.
|
124
|
-
sorbet-static (0.5.
|
125
|
+
sorbet-runtime (0.5.5420)
|
126
|
+
sorbet-static (0.5.5420-universal-darwin-14)
|
125
127
|
sprockets (4.0.0)
|
126
128
|
concurrent-ruby (~> 1.0)
|
127
129
|
rack (> 1, < 3)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# typed:
|
1
|
+
# typed: false
|
2
2
|
class HogwartsAcceptanceMailer < ApplicationMailer
|
3
3
|
extend T::Sig
|
4
4
|
|
@@ -7,6 +7,22 @@ class HogwartsAcceptanceMailer < ApplicationMailer
|
|
7
7
|
# TODO: mail acceptance letter to student
|
8
8
|
end
|
9
9
|
|
10
|
+
sig {
|
11
|
+
params(
|
12
|
+
teacher: Wizard,
|
13
|
+
note: String,
|
14
|
+
student: Wizard,
|
15
|
+
special: T::Boolean,
|
16
|
+
).void
|
17
|
+
}
|
18
|
+
def notify_teacher(
|
19
|
+
teacher,
|
20
|
+
note=nil,
|
21
|
+
student:,
|
22
|
+
special: false
|
23
|
+
) # TODO: let the teacher know when a students accepted offer
|
24
|
+
end
|
25
|
+
|
10
26
|
def notify_retry(student)
|
11
27
|
# TODO: send more owls!!
|
12
28
|
end
|
@@ -1,10 +1,12 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ../../..
|
3
3
|
specs:
|
4
|
-
sorbet-rails (0.6.
|
4
|
+
sorbet-rails (0.6.1)
|
5
|
+
method_source (>= 0.9.2)
|
5
6
|
parlour (~> 2.0)
|
6
|
-
|
7
|
-
sorbet-coerce (>= 0.2.
|
7
|
+
parser (>= 2.7)
|
8
|
+
sorbet-coerce (>= 0.2.4)
|
9
|
+
sorbet-runtime (>= 0.5)
|
8
10
|
|
9
11
|
GEM
|
10
12
|
remote: https://rubygems.org/
|
@@ -55,7 +57,7 @@ GEM
|
|
55
57
|
bindex (0.8.1)
|
56
58
|
builder (3.2.4)
|
57
59
|
byebug (11.1.1)
|
58
|
-
commander (4.5.
|
60
|
+
commander (4.5.2)
|
59
61
|
highline (~> 2.0.0)
|
60
62
|
concurrent-ruby (1.1.6)
|
61
63
|
crass (1.0.6)
|
@@ -80,14 +82,14 @@ GEM
|
|
80
82
|
mini_portile2 (2.4.0)
|
81
83
|
minitest (5.14.0)
|
82
84
|
nio4r (2.5.2)
|
83
|
-
nokogiri (1.10.
|
85
|
+
nokogiri (1.10.9)
|
84
86
|
mini_portile2 (~> 2.4.0)
|
85
87
|
parlour (2.0.0)
|
86
88
|
commander (~> 4.5)
|
87
89
|
parser
|
88
90
|
rainbow (~> 3.0)
|
89
91
|
sorbet-runtime (>= 0.5)
|
90
|
-
parser (2.7.0.
|
92
|
+
parser (2.7.0.4)
|
91
93
|
ast (~> 2.4.0)
|
92
94
|
polyfill (1.8.0)
|
93
95
|
puma (3.12.4)
|
@@ -121,15 +123,15 @@ GEM
|
|
121
123
|
rainbow (3.0.0)
|
122
124
|
rake (13.0.1)
|
123
125
|
safe_type (1.1.1)
|
124
|
-
sorbet (0.5.
|
125
|
-
sorbet-static (= 0.5.
|
126
|
-
sorbet-coerce (0.2.
|
126
|
+
sorbet (0.5.5420)
|
127
|
+
sorbet-static (= 0.5.5420)
|
128
|
+
sorbet-coerce (0.2.4)
|
127
129
|
polyfill (~> 1.8)
|
128
130
|
safe_type (~> 1.1, >= 1.1.1)
|
129
131
|
sorbet (>= 0.4.4704)
|
130
132
|
sorbet-runtime (>= 0.4.4704)
|
131
|
-
sorbet-runtime (0.5.
|
132
|
-
sorbet-static (0.5.
|
133
|
+
sorbet-runtime (0.5.5420)
|
134
|
+
sorbet-static (0.5.5420-universal-darwin-14)
|
133
135
|
sprockets (4.0.0)
|
134
136
|
concurrent-ruby (~> 1.0)
|
135
137
|
rack (> 1, < 3)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# typed:
|
1
|
+
# typed: false
|
2
2
|
class HogwartsAcceptanceMailer < ApplicationMailer
|
3
3
|
extend T::Sig
|
4
4
|
|
@@ -7,6 +7,22 @@ class HogwartsAcceptanceMailer < ApplicationMailer
|
|
7
7
|
# TODO: mail acceptance letter to student
|
8
8
|
end
|
9
9
|
|
10
|
+
sig {
|
11
|
+
params(
|
12
|
+
teacher: Wizard,
|
13
|
+
note: String,
|
14
|
+
student: Wizard,
|
15
|
+
special: T::Boolean,
|
16
|
+
).void
|
17
|
+
}
|
18
|
+
def notify_teacher(
|
19
|
+
teacher,
|
20
|
+
note=nil,
|
21
|
+
student:,
|
22
|
+
special: false
|
23
|
+
) # TODO: let the teacher know when a students accepted offer
|
24
|
+
end
|
25
|
+
|
10
26
|
def notify_retry(student)
|
11
27
|
# TODO: send more owls!!
|
12
28
|
end
|
@@ -1,10 +1,12 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ../../..
|
3
3
|
specs:
|
4
|
-
sorbet-rails (0.6.
|
4
|
+
sorbet-rails (0.6.1)
|
5
|
+
method_source (>= 0.9.2)
|
5
6
|
parlour (~> 2.0)
|
6
|
-
|
7
|
-
sorbet-coerce (>= 0.2.
|
7
|
+
parser (>= 2.7)
|
8
|
+
sorbet-coerce (>= 0.2.4)
|
9
|
+
sorbet-runtime (>= 0.5)
|
8
10
|
|
9
11
|
GEM
|
10
12
|
remote: https://rubygems.org/
|
@@ -68,7 +70,7 @@ GEM
|
|
68
70
|
bindex (0.8.1)
|
69
71
|
builder (3.2.4)
|
70
72
|
byebug (11.1.1)
|
71
|
-
commander (4.5.
|
73
|
+
commander (4.5.2)
|
72
74
|
highline (~> 2.0.0)
|
73
75
|
concurrent-ruby (1.1.6)
|
74
76
|
crass (1.0.6)
|
@@ -93,14 +95,14 @@ GEM
|
|
93
95
|
mini_portile2 (2.4.0)
|
94
96
|
minitest (5.14.0)
|
95
97
|
nio4r (2.5.2)
|
96
|
-
nokogiri (1.10.
|
98
|
+
nokogiri (1.10.9)
|
97
99
|
mini_portile2 (~> 2.4.0)
|
98
100
|
parlour (2.0.0)
|
99
101
|
commander (~> 4.5)
|
100
102
|
parser
|
101
103
|
rainbow (~> 3.0)
|
102
104
|
sorbet-runtime (>= 0.5)
|
103
|
-
parser (2.7.0.
|
105
|
+
parser (2.7.0.4)
|
104
106
|
ast (~> 2.4.0)
|
105
107
|
polyfill (1.8.0)
|
106
108
|
puma (3.12.4)
|
@@ -136,15 +138,15 @@ GEM
|
|
136
138
|
rainbow (3.0.0)
|
137
139
|
rake (13.0.1)
|
138
140
|
safe_type (1.1.1)
|
139
|
-
sorbet (0.5.
|
140
|
-
sorbet-static (= 0.5.
|
141
|
-
sorbet-coerce (0.2.
|
141
|
+
sorbet (0.5.5420)
|
142
|
+
sorbet-static (= 0.5.5420)
|
143
|
+
sorbet-coerce (0.2.4)
|
142
144
|
polyfill (~> 1.8)
|
143
145
|
safe_type (~> 1.1, >= 1.1.1)
|
144
146
|
sorbet (>= 0.4.4704)
|
145
147
|
sorbet-runtime (>= 0.4.4704)
|
146
|
-
sorbet-runtime (0.5.
|
147
|
-
sorbet-static (0.5.
|
148
|
+
sorbet-runtime (0.5.5420)
|
149
|
+
sorbet-static (0.5.5420-universal-darwin-14)
|
148
150
|
sprockets (4.0.0)
|
149
151
|
concurrent-ruby (~> 1.0)
|
150
152
|
rack (> 1, < 3)
|
@@ -165,7 +167,7 @@ GEM
|
|
165
167
|
websocket-driver (0.7.1)
|
166
168
|
websocket-extensions (>= 0.1.0)
|
167
169
|
websocket-extensions (0.1.4)
|
168
|
-
zeitwerk (2.
|
170
|
+
zeitwerk (2.3.0)
|
169
171
|
|
170
172
|
PLATFORMS
|
171
173
|
ruby
|