일부 제 3 자 제품 DB API에 Ruby 래퍼를 사용하고 있습니다.다른 모듈을 만들기 위해 루비 모듈을 "상속"할 수 있습니까?
API는 REST-ish이며 API 엔드 포인트가 /api/Product.getInfo
인 Product, Category, Company, Event 등과 같은 모델이 있습니다.
내 접근 방식은 API 호출 래퍼와 편리한 메소드를 사용하여 해당 API 모델에 해당하는 Ruby 클래스를 만드는 것이다. 이러한 모델 클래스는 모두 API 호출을 추상화하고 다른 공통 기능을 가진 동일한 상위 클래스 인 Base를 공유합니다.
Theese API 모델에는 많은 유사점이 있습니다. 예를 들어 제품, 회사 및 이벤트 모델에 태그를 지정할 수 있으므로 createTag
, deleteTag
, getTags
과 같이 태그 지정을위한 API 호출 집합을 가질 수 있으며 태그 지정 기능을 추상화하기 위해 Taggable
모듈을 생성하고 포함 시켰습니다 이 세 가지 모델.
이제 제품, 이벤트, 회사 및 일부 다른 모델 (간략화를 위해 생략 됨)간에 공유되는 두 가지 기본 API 호출 인 createReview
및 getReviews
이있는 "검토"기능이 있습니다. 그러나 제품 및 이벤트 모델 만 createRiview
및 getReviews
을 지원하고 나머지는 getReviews
만 지원합니다.
그럼 두 모듈 (Reviewable
및 WithReviews
)을 사용하는 것이 좋을 것 같았습니다. 이전 (읽기/쓰기)은 후자 (읽기 전용)를 "상속"하지만 분명히 루비는 하위 모듈화를 지원하지 않습니다.
지금 어떻게해야합니까?
- 읽기/쓰기 버전 (예 :
Reviewable
) 대신 쓰기 전용 버전을 만들고 두 모듈을 모두 제품 및 이벤트 모델에 포함해야합니까? - 어떻게 든 루비가 "상속" (읽기 전용)으로
Reviewable
(읽기/쓰기)을 만들 수 있습니까? - 아니면 완전히 벗어나 이런 종류의 문제를 해결할 수있는 더 좋은 방법이 있습니까 ???
또한 내 모듈 이름은 무엇이라고 생각하십니까?
처럼,
- Taggable = 읽기 및 리뷰에 대한 상기와
- 검토 가능한 = 같은 모델에 태그를 쓰기
- WithReviews = 읽기 전용 검토
내가 생각하는 기능 첫 번째 두 개의 변수는 괜찮지 만 읽기 전용 버전의 이름을 지정하는 더 좋은 방법이나 규칙이 있습니까? WRITE-ONLY 모듈 명명을위한 권장 사항이 있습니까?
감사합니다.
SAKI = D
'읽기/쓰기','읽기 전용 '이란 무엇입니까? – Newben
죄송합니다. 거기에 분명히 없었습니다 ... "읽기/쓰기"=> 검토 모듈은 createReview (write) 및 getReviews (read) API 호출을 래핑합니다. "읽기 전용"=> WithReviews 모듈은 getReviews (읽기) API 호출 만 래핑합니다. 감사합니다. – Sacki
여기에는 많은 의견을 제시하는 질문이 있으며 사실은 거의 대답 할 수 없습니다. –