Example
Write typed Ruby, compile to standard Ruby with generated type signatures.
# hello.trb
def greet(name: String): String
"Hello, #{name}!"
end
def add(a: Integer, b: Integer): Integer
a + b
end
# hello.rb
def greet(name)
"Hello, #{name}!"
end
def add(a, b)
a + b
end
# hello.rbs
def greet: (name: String) -> String
def add: (a: Integer, b: Integer) -> Integer
Existing Methods
Compare with existing Ruby typing solutions and see why T-Ruby is different.
How it works
A static type checker for Ruby developed by Stripe. Uses sig blocks to declare types on methods.
# typed: strict
require 'sorbet-runtime'
class Greeter
extend T::Sig
sig { params(name: String).returns(String) }
def greet(name)
"Hello, #{name}!"
end
end
Limitations
- Requires runtime dependency (sorbet-runtime gem)
- Types must be written separately in sig blocks, like comments above function code.
- Requires learning sig block's unique DSL syntax.
T-Ruby Approach
T-Ruby uses inline types like TypeScript without runtime dependencies, and generates standard RBS files.
Quick Start
Initialize project
gem install t-ruby
trc --init
Start watch mode
trc --watch
Write typed Ruby
def greet(name: String): String
"Hello, #{name}!"
end
Works with your tools
T-Ruby integrates seamlessly with the Ruby ecosystem.
Editors
- VS Code Extension
- JetBrains Plugin
- Neovim Plugin
- Language Server (LSP)
Type Checkers
- Steep
- Ruby LSP
- Sorbet (via RBS)
Ruby Ecosystem
- RBS Compatible
- Any Ruby version
- All gems work
Join the Journey
T-Ruby is an open source project. Your contribution makes a difference.
It's still experimental. The core compiler works, but there's much to improve.
Feedback and suggestions are always welcome!