Tapioca / Sorbet Integration
Features
class CreateUser < ApplicationService
arg :name, type: String
arg :email, type: String, optional: true
arg :role, type: [Symbol, String]
output :user, type: User
end# sorbet/rbi/dsl/create_user.rbi
# typed: true
class CreateUser
sig { returns(String) }
def name; end
sig { returns(T::Boolean) }
def name?; end
sig { returns(T.nilable(String)) }
def email; end
sig { returns(T::Boolean) }
def email?; end
sig { returns(T.any(Symbol, String)) }
def role; end
sig { returns(T::Boolean) }
def role?; end
sig { returns(User) }
def user; end
sig { returns(T::Boolean) }
def user?; end
private
sig { params(value: String).returns(String) }
def name=(value); end
sig { params(value: T.nilable(String)).returns(T.nilable(String)) }
def email=(value); end
sig { params(value: T.any(Symbol, String)).returns(T.any(Symbol, String)) }
def role=(value); end
sig { params(value: User).returns(User) }
def user=(value); end
endSetup
1. Install Tapioca
2. Generate RBI Files
3. Re-generate After Changes
Type Mappings
Ruby Types
Ruby Type
Sorbet Type
Boolean Types
Union Types
Optional Types
Sorbet Runtime Types
Sorbet Type
Generated RBI
Generated Methods
Method
Return Type
Visibility
Inheritance
Troubleshooting
RBI files not generated
Types showing as T.untyped
T.untypedSee Also
Last updated