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