피드로 돌아가기
Dev.toBackend
원문 읽기
diesel-guard가 Rhai 스크립트 엔진을 통합하여 사용자가 런타임에 커스텀 마이그레이션 체크 규칙을 작성할 수 있게 되었다
Adding a Scripting Engine to a Rust CLI with Rhai
AI 요약
Context
diesel-guard는 Postgres 마이그레이션의 잠금 문제를 감지하는 linter로 28개의 내장 체크를 제공한다. 사용자들이 team별 명명 규칙이나 DBA 요구사항에 맞는 커스텀 체크를 요청하게 되었다.
Technical Solution
- Rhai crate를 "serde", "sync" 피처와 함께 Cargo.toml에 추가한다
- 모든 체크(내장/커스텀)가 동일한 Check trait를 구현하도록 구조화한다
- rhai::serde::to_dynamic()으로 Rust struct를 Dynamic 값으로 직렬화한다
- protobuf enum variants가 map keys로 변환되어 스크립트에서 접근 가능하다
- diesel-guard.toml의 custom_checks_dir에 Rhai 스크립트 파일을 배치한다
Impact
스크립트 로딩 시 재컴파일 없이 런타임에 규칙을 적용할 수 있다
Key Takeaway
trait 기반 아키텍처로 내장과 커스텀 구현의 경계를 제거하면 확장성이 크게 향상된다
실천 포인트
Rust CLI 도구에서 사용자 정의 규칙을 런타임에 로드해야 하는 환경에서 Rhai를 엔진으로 활용 시 serde 피처와 to_dynamic() 변환으로 Rust 타입과 스크립트를 자연스럽게 연결할 수 있다