feat: Ruby 바인딩 추가 - #171
Conversation
- packages/ruby: magnus 기반 네이티브 확장 (encode / translate_to_unicode / translate_to_braille_font) - 소스 gem은 crates.io braillify 사용, 저장소 빌드는 [patch.crates-io]로 로컬 코어 사용 - rb-sys-test-helpers 임베디드 VM 단위 테스트 + minitest 통합 테스트 - CI: ruby-test(3 OS) / ruby-build(cross-gem 5플랫폼) / ruby-publish(rubygems.org) 잡 추가 - changepacks에 packages/ruby/Cargo.toml 등록 (버전 단일 소스) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Windows 로컬 검증(ucrt Ruby 3.4 + GNU Rust)에서 cargo test/rake compile/minitest 전부 통과 확인 - mswin(개발 빌드) Ruby 대신 rb-sys 공식 setup-ruby-and-rust 액션으로 툴체인 매칭 위임 - Windows bindgen(libclang) 환경변수 요구사항 README에 문서화 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests.
🚀 New features to boost your workflow:
|
|
conflicts 만 resolve 하면 될 것 같습니다 |
|
|
||
| module Braillify | ||
| # 버전 단일 소스는 Cargo.toml — changepacks가 bump하는 파일이다. | ||
| VERSION = File.read(File.expand_path("../../Cargo.toml", __dir__), encoding: "UTF-8")[/^version = "([^"]+)"/, 1].freeze |
| # packages/ruby는 소스 gem 배포를 위해 braillify를 crates.io 버전으로 의존한다. | ||
| # 저장소 내 빌드(개발/CI/프리컴파일 gem)는 이 patch로 로컬 코어를 사용한다. | ||
| [patch.crates-io] | ||
| braillify = { path = "libs/braillify" } |
There was a problem hiding this comment.
해당 내용은 로컬의 braillify를 참조하겠다는 것이 아닌지 여쭙습니다
There was a problem hiding this comment.
네 맞습니다, 말씀하신 대로 해당 설정은 저장소 내부에서 개발하거나 CI 및 프리컴파일 gem을 빌드할 때 로컬 libs/braillify를 참조하기 위한 것입니다.
packages/ruby/Cargo.toml에는 braillify = { version = "2" }로 crates.io 의존성을 선언해 두었고, 저장소 내부에서 빌드할 때만 루트 Cargo.toml의 [patch.crates-io]가 적용되어 이를 로컬 libs/braillify로 대체하도록 구성했습니다. 반면 배포되는 소스 gem에는 루트 Cargo.toml과 libs/braillify가 포함되지 않기 때문에, 사용자가 소스 gem을 설치할 때는 patch가 적용되지 않고 crates.io에 배포된 braillify 2.x를 사용하게 됩니다.
Ruby 패키지에 직접 path = "../../libs/braillify"를 지정하면 소스 gem을 단독으로 설치할 때 해당 경로가 존재하지 않아 빌드가 실패할 수 있어 이 방식을 선택했습니다.
혹시 이러한 목적에 더 적합하거나 일반적으로 권장되는 구성이 있다면 의견 부탁드립니다!
개요
한국어 점역 엔진의 Ruby 바인딩(
packages/ruby)을 추가합니다. Python(pyo3) 바인딩과 대칭되는 magnus + rb-sys 네이티브 확장 방식이며, RubyGems에braillifygem으로 배포됩니다.주요 변경 사항
macOS x86_64/arm64, Windows ucrt) 프리컴파일 gem + 소스 gem 빌드
테스트
머지 전 필요 사항