2011-03-18 7 views
12

나는을 사용하여 makrdown을 스크립트 파서로 사용하여 내 레일 앱용 문서를 생성합니다. 대부분의 문서 기능은 바로 사용할 수 있습니다. 그러나 모델 속성을 하나에 문서화하고 모델에 사용 가능한 속성 목록을 기록하고 의미 론적 의미를 설명하기 위해 두 개를 기록하려고합니다.YARD를 사용한 문서 모델 속성

YARD에서 특별한 지원을 찾을 수 없었습니다. 기본적으로 클래스 주석의 속성을 나열하면됩니다. 표준 속성/메소드와 같은 문서에 동적으로 생성 된 모델 속성을 문서화하는 방법이 있습니까?

P. 필자는 annodate-models gem을 사용하여 클래스 목록 맨 위에 기본 스키마 덤프를 생성했지만 실제로는 원하는 것은 아닙니다.

답변

9

주위를 둘러 보면서 필자는 모델 파일에 특성 문서를 수동으로 추가했습니다. 확실히 이상적은 아니지만, 모델 구조가 완전히 바뀌지는 않기를 바랍니다.

내가 프로젝트에 대한 .yardopts 파일을 생성하고 다음을 표시하기위한 두 개의 새로운 태그를 생성하는 마당 명령 줄 옵션을 사용 :이 속성까지 표시에 대한 특정 태그 나에게 제공

--type-name-tag 'attribute:Attributes' --type-name-tag 'association:Associations' 

및 협회; 문서의 "속성"및 "연관성"제목 아래에 그룹으로 표시됩니다. 나는 이것을 추가 할 수있다 :

# @attribute name [String] The name of the object 
# @association relatedObjs [Array<AnotherClass>] Objects needed to perform a certain function 

어쩌면 누군가 annotate-models 출력을 파싱 할 YARD 용 플러그인을 작성하게 될 것이다.

+1

유망 해 보입니다. 나는 이미 annotae-models gem을 포크 화하여 추가 형식을 추가했습니다. 이것은 단지 갈 길일 것입니다. Github 저장소에 전체 명령 줄 및 .yardopts 파일을 포함 할 수 있습니까? –

+2

예! 사용하려는 모든 명령 행 옵션을 프로젝트 루트의 .yardopts 파일에 넣기 만하면됩니다. 그런 다음 프로젝트 루트에서'yardoc'을 실행하면됩니다. 나는 annotate-models 코드에서 당신이 생각해내는 것을보고 싶다. 누군가 컬럼 테이블의 나머지 부분과 함께 MySQL 테이블에서 주석을 가져올 수있는 재미있는 포크가있었습니다. 그게 훨씬 쉽습니다. – dmkash

+0

이것은 유망 해 보이지만 YARD는'[Type]'을 무시한 것 같습니다. 다른 솔루션을 찾았습니까? 이게 너에게 얼마나 효과적 이었니? –

13

YARD 지금이 목적을 위해 자신의 @!attribute (느낌표 통지) 태그가 보인다 :

http://rubydoc.info/docs/yard/file/docs/Tags.md#attribute

예 :

class Task < ActiveRecord::Base 
    # @!attribute name 
    # @return [String] The name of the task. 

    # @!attribute description 
    # @return [String] The description of the task. 

    # @!attribute active 
    # @return [Boolean] Marks whether the task is active or not. 
end 

이 좋은 문서를 초래할 것이다 속성. 주의해야 할 점은 데이터베이스에서 데이터베이스를 삭제할 때 문서에서 속성을 제거했는지 여부를 아무도 검사하지 않으므로 문서를 항상 최신 상태로 유지한다는 것입니다.

+1

그게 내가 사용하는 해결책이지만 YARD가'Task # name =','Task # description ='과'Task # active ='를 문서화되지 않은 것으로 보여서 문제를 일으킨다. 그래서 내 문서를 되 찾을 방법을 모르겠다. 100까지%. – digitig

+0

나는 setter 용 문서를 복제하는 것으로 끝났다. 더 나은 해결책이 있습니까? '@! attribute description =' – GreenEggs