본문으로 건너뛰기
실험적GitHub stars

T-Ruby is Ruby
with syntax for types.

타입 어노테이션이 있는 .trb 파일을 작성하세요.
표준 .rb 파일과 .rbs로 컴파일됩니다.
타입스크립트처럼요.

$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는 오픈소스 프로젝트입니다. 여러분의 참여가 큰 힘이 됩니다.
아직 실험 단계입니다. 핵심 컴파일러는 작동하지만, 개선할 부분이 많습니다.
피드백과 제안은 언제든 환영합니다!