Skip to content
This repository was archived by the owner on Jul 5, 2023. It is now read-only.

Commit f7d8d12

Browse files
author
Harry Doan
authored
release 0.6.1 (#297)
* 0.6.1 release * bump gem version & sorbet-coerce gem version * Update README to include RelationType doc * Fix relation type link
1 parent 855dad2 commit f7d8d12

File tree

6 files changed

+42
-22
lines changed

6 files changed

+42
-22
lines changed

README.md

+24-4
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ We also add following methods to make type-checking more easily:
7373
- [`find_n`, `first_n`, `last_n`](https://github.com/chanzuckerberg/sorbet-rails#find-first-and-last)
7474
- [`pluck_to_tstruct`](#pluck_to_tstruct-instead-of-pluck)
7575
- [`typed_enum`](#enums)
76+
- [`Model::RelationType`](#relationtype-alias)
7677

7778
#### `pluck_to_tstruct` instead of `pluck`
7879

@@ -159,6 +160,22 @@ Generates only typed enum setter & getter:
159160
def typed_house=(value); end
160161
```
161162
163+
#### `RelationType` alias
164+
165+
There are several kinds of relations of a model: `User::ActiveRecord_Relation`, `User::ActiveRecord_AssociationRelation` and `User::ActiveRecord_Associations_CollectionProxy`. Usually the code may need just any relation type. We add a `Model::RelationType` type alias for every model to use it.
166+
167+
```ruby
168+
class User
169+
RelationType = T.type_alias do
170+
T.any(
171+
User::ActiveRecord_Relation,
172+
User::ActiveRecord_AssociationRelation,
173+
User::ActiveRecord_Associations_CollectionProxy
174+
)
175+
end
176+
end
177+
```
178+
162179
### Controllers
163180
```sh
164181
❯ bundle exec rake rails_rbi:custom
@@ -231,13 +248,16 @@ instructions specify that `sorbet-rails` should be placed in the [`:default`
231248
group](https://bundler.io/v2.0/guides/groups.html) of the `Gemfile`, not a
232249
specific environment group (eg. `development` only).
233250

234-
- Relation class: Making the relations available at runtime (they are normally private constants, the gem makes them public)
235-
- Examples: `User::ActiveRecord_Relation`, `User::ActiveRecord_AssociationRelation`
236-
- Model:
251+
- Model: The gem provides some helper method to a model to make type-checking easier:
237252
- `find_n`, `first_n`, `last_n`
238253
- `pluck_to_tstruct`
239254
- `typed_enum`
240-
- Controller: using `TypedParams`
255+
256+
- Model Relation:
257+
- Make relation classes public. By default, relation classes like `User::ActiveRecord_Relation`, `User::ActiveRecord_AssociationRelation` are private
258+
- Add type alias, eg `Model::RelationType`, to represents any type of relation of a model.
259+
260+
- Controller: use `TypedParams` to convert controller parameters to a typed structure
241261

242262
In addition to `require`ing `sorbet-rails`, you must also run
243263
`bundle exec rake rails_rbi:custom`, which will produce the RBI for these runtime features.

sorbet-rails.gemspec

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Gem::Specification.new do |s|
22
s.name = %q{sorbet-rails}
3-
s.version = "0.6.0"
3+
s.version = "0.6.1"
44
s.date = %q{2019-04-18}
55
s.summary = %q{Set of tools to make Sorbet work with Rails seamlessly.}
66
s.authors = ["Chan Zuckerberg Initiative"]
@@ -17,7 +17,7 @@ Gem::Specification.new do |s|
1717

1818
s.add_dependency 'parlour', '~> 2.0'
1919
s.add_dependency 'sorbet-runtime', '>= 0.5'
20-
s.add_dependency 'sorbet-coerce', '>= 0.2.3'
20+
s.add_dependency 'sorbet-coerce', '>= 0.2.4'
2121
s.add_dependency 'method_source', '>= 0.9.2'
2222
s.add_dependency 'parser', '>= 2.7'
2323

spec/support/v5.0/Gemfile.lock

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
PATH
22
remote: ../../..
33
specs:
4-
sorbet-rails (0.6.0)
4+
sorbet-rails (0.6.1)
55
method_source (>= 0.9.2)
66
parlour (~> 2.0)
77
parser (>= 2.7)
8-
sorbet-coerce (>= 0.2.3)
8+
sorbet-coerce (>= 0.2.4)
99
sorbet-runtime (>= 0.5)
1010

1111
GEM
@@ -52,7 +52,7 @@ GEM
5252
ast (2.4.0)
5353
builder (3.2.4)
5454
byebug (11.1.1)
55-
commander (4.5.0)
55+
commander (4.5.2)
5656
highline (~> 2.0.0)
5757
concurrent-ruby (1.1.6)
5858
crass (1.0.6)
@@ -116,7 +116,7 @@ GEM
116116
safe_type (1.1.1)
117117
sorbet (0.5.5420)
118118
sorbet-static (= 0.5.5420)
119-
sorbet-coerce (0.2.3)
119+
sorbet-coerce (0.2.4)
120120
polyfill (~> 1.8)
121121
safe_type (~> 1.1, >= 1.1.1)
122122
sorbet (>= 0.4.4704)

spec/support/v5.1/Gemfile.lock

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
PATH
22
remote: ../../..
33
specs:
4-
sorbet-rails (0.6.0)
4+
sorbet-rails (0.6.1)
55
method_source (>= 0.9.2)
66
parlour (~> 2.0)
77
parser (>= 2.7)
8-
sorbet-coerce (>= 0.2.3)
8+
sorbet-coerce (>= 0.2.4)
99
sorbet-runtime (>= 0.5)
1010

1111
GEM
@@ -53,7 +53,7 @@ GEM
5353
bindex (0.8.1)
5454
builder (3.2.4)
5555
byebug (11.1.1)
56-
commander (4.5.0)
56+
commander (4.5.2)
5757
highline (~> 2.0.0)
5858
concurrent-ruby (1.1.6)
5959
crass (1.0.6)
@@ -117,7 +117,7 @@ GEM
117117
safe_type (1.1.1)
118118
sorbet (0.5.5420)
119119
sorbet-static (= 0.5.5420)
120-
sorbet-coerce (0.2.3)
120+
sorbet-coerce (0.2.4)
121121
polyfill (~> 1.8)
122122
safe_type (~> 1.1, >= 1.1.1)
123123
sorbet (>= 0.4.4704)

spec/support/v5.2/Gemfile.lock

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
PATH
22
remote: ../../..
33
specs:
4-
sorbet-rails (0.6.0)
4+
sorbet-rails (0.6.1)
55
method_source (>= 0.9.2)
66
parlour (~> 2.0)
77
parser (>= 2.7)
8-
sorbet-coerce (>= 0.2.3)
8+
sorbet-coerce (>= 0.2.4)
99
sorbet-runtime (>= 0.5)
1010

1111
GEM
@@ -57,7 +57,7 @@ GEM
5757
bindex (0.8.1)
5858
builder (3.2.4)
5959
byebug (11.1.1)
60-
commander (4.5.0)
60+
commander (4.5.2)
6161
highline (~> 2.0.0)
6262
concurrent-ruby (1.1.6)
6363
crass (1.0.6)
@@ -125,7 +125,7 @@ GEM
125125
safe_type (1.1.1)
126126
sorbet (0.5.5420)
127127
sorbet-static (= 0.5.5420)
128-
sorbet-coerce (0.2.3)
128+
sorbet-coerce (0.2.4)
129129
polyfill (~> 1.8)
130130
safe_type (~> 1.1, >= 1.1.1)
131131
sorbet (>= 0.4.4704)

spec/support/v6.0/Gemfile.lock

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
PATH
22
remote: ../../..
33
specs:
4-
sorbet-rails (0.6.0)
4+
sorbet-rails (0.6.1)
55
method_source (>= 0.9.2)
66
parlour (~> 2.0)
77
parser (>= 2.7)
8-
sorbet-coerce (>= 0.2.3)
8+
sorbet-coerce (>= 0.2.4)
99
sorbet-runtime (>= 0.5)
1010

1111
GEM
@@ -70,7 +70,7 @@ GEM
7070
bindex (0.8.1)
7171
builder (3.2.4)
7272
byebug (11.1.1)
73-
commander (4.5.0)
73+
commander (4.5.2)
7474
highline (~> 2.0.0)
7575
concurrent-ruby (1.1.6)
7676
crass (1.0.6)
@@ -140,7 +140,7 @@ GEM
140140
safe_type (1.1.1)
141141
sorbet (0.5.5420)
142142
sorbet-static (= 0.5.5420)
143-
sorbet-coerce (0.2.3)
143+
sorbet-coerce (0.2.4)
144144
polyfill (~> 1.8)
145145
safe_type (~> 1.1, >= 1.1.1)
146146
sorbet (>= 0.4.4704)

0 commit comments

Comments
 (0)