thing
같은 다른 여러 프로젝트에서 사용되는 공유 gem이 있다고 가정 해 봅시다 example-project
. thing
유형 검사를 활용하기 위해 보석에 셔벗을 사용하고 싶습니다 . 내 소비 프로젝트를 내 gem의 유형과 비교하여 확인하려면 어떻게해야합니까?
예를 들어 코드는 다음과 같습니다.
물건 보석
# typed: strict
require 'sorbet-runtime'
class Thing
extend T::Sig
sig { params(phrase: String).returns(String) }
def say(phrase)
"Thing said: '#{phrase}'"
end
end
예제 프로젝트
# typed: strict
require 'thing'
Thing.new.say(1) # Should cause a type error
실행 후 srb rbi update
, 나는sorbet/rbi/gems/thing.rbi
class Thing
def say(*args, &blk); end
extend T::Private::Methods::MethodHooks
extend T::Private::Methods::SingletonMethodHooks
extend T::Sig
end
이것은 내가 기대하는 보석의 시그를 가지고 있지 않으며 내가 기대 srb tc
하는 오류를 일으키지 않습니다.
rbi/thing.rbi
보석에 포함이것은 작동하지만 별도의 rbi 파일을 유지하는 것보다 gem 코드에 sigs를 인라인으로 작성하는 것이 좋습니다. .rb
sigs로 파일을 가져 와서 파일을 출력 할 수있는 도구가 있습니까? .rbi
(그리고 파일에서 sigs를 제거하여 .rb
sorbet없이 gem을 배포 할 수 있습니다). tsc --declaration
에서 오는 typescript와 유사한 워크 플로를 생각하고 있습니다 .ts => .d.ts + .js
.
https://github.com/AaronC81/brain_freeze 는 인라인 선언이있는 RB 파일에서 RBI 파일을 생성하는 것을 목표로하는 새로운 프로젝트입니다. 아직 이르지만 시도해 볼 가치가있을 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다