メインコンテンツまでスキップ
実験的GitHub stars

T-Ruby is Ruby
with syntax for types.

型アノテーション付きの.trbファイルを書きましょう。
標準の.rbファイルと.rbsにコンパイルします。
TypeScriptのように。

$gem install t-ruby

What is T-Ruby?

Ruby and More

T-Rubyは追加の構文でRubyを強力に拡張します。これは静的型だけでなくコンパイルタイムを意味します。

A Result You Can Trust

T-RubyコードはRubyとRBSに変換されるため、Ruby、RBSが動作するすべてのエコシステムでの動作を保証します。

Safety at Scale

T-Rubyを通じてRubyで作成された製品の型安全性を確保しましょう。大規模でも安全な状態を維持できます。

型付きRubyを書いて、生成された型シグネチャと共に標準Rubyにコンパイルします。

hello.trb入力
# hello.trb
def greet(name: String): String
"Hello, #{name}!"
end

def add(a: Integer, b: Integer): Integer
a + b
end
hello.rb生成
# hello.rb
def greet(name)
"Hello, #{name}!"
end

def add(a, b)
a + b
end
+
hello.rbs生成
# hello.rbs
def greet: (name: String) -> String

def add: (a: Integer, b: Integer) -> Integer

既存の方法

既存のRuby型付けソリューションと比較して、T-Rubyの違いを確認してください。

使い方

Stripeが開発したRuby用静的型チェッカーです。sigブロックを使用してメソッドに型を宣言します。

# typed: strict
require 'sorbet-runtime'

class Greeter
extend T::Sig

sig { params(name: String).returns(String) }
def greet(name)
"Hello, #{name}!"
end
end

制限事項

  • ランタイム依存性が必要(sorbet-runtime gem)
  • 実際の関数コードとは別に、コメントのようにsigブロックで型を書く必要があります。
  • sigブロック独自のDSL構文を学ぶ必要があります。

T-Rubyのアプローチ

T-Rubyはランタイム依存性なしでTypeScriptのようにインライン型を使用し、標準RBSファイルを生成します。

クイックスタート

1

プロジェクトを初期化

gem install t-ruby
trc --init
2

ウォッチモードを開始

trc --watch
3

型付きRubyを書く

src/hello.trb
def greet(name: String): String
"Hello, #{name}!"
end

お使いのツールと連携

T-RubyはRubyエコシステムとシームレスに統合されます。

エディタ

  • VS Code拡張機能
  • JetBrainsプラグイン
  • Neovimプラグイン
  • ランゲージサーバー(LSP)

型チェッカー

  • Steep
  • Ruby LSP
  • Sorbet(RBS経由)

Rubyエコシステム

  • RBS互換
  • すべてのRubyバージョン
  • すべてのgemが動作

一緒に作りましょう

T-Rubyはオープンソースプロジェクトです。あなたの参加が大きな力になります。
まだ実験段階です。コアコンパイラは動作しますが、改善すべき点がたくさんあります。
フィードバックや提案はいつでも歓迎します!