Back Original

T-Ruby is Ruby with syntax for types

What is T-Ruby?

Ruby and More

T-Ruby extends Ruby with additional syntax. This means static types and compile time.

A Result You Can Trust

T-Ruby code converts to Ruby and RBS, guaranteeing compatibility with the entire Ruby and RBS ecosystem.

Safety at Scale

Ensure type safety for your Ruby products with T-Ruby. Stay safe even at large scale.

Example

Write typed Ruby, compile to standard Ruby with generated type signatures.


def greet(name: String): String
"Hello, #{name}!"
end

def add(a: Integer, b: Integer): Integer
a + b
end


def greet(name)
"Hello, #{name}!"
end

def add(a, b)
a + b
end

+


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.


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

1

Initialize project

gem install t-ruby
trc --init

3

Write typed Ruby

src/hello.trb

def greet(name: String): String
"Hello, #{name}!"
end

Works with your tools

T-Ruby integrates seamlessly with the Ruby ecosystem.

Join the Journey

T-Ruby is an open source project. Your contribution makes a difference.