2013-06-27 1 views
11

요리사 레포에서 몇 가지 조리법을 공유하고 싶습니다. 나는 요리 책 수준에서 라이브러리 디렉토리의 모듈에 코드를 넣을 수 있다는 것을 알고있다 (related question 참조). 내가 찾고있는 것은 그와 비슷하지만 요리사 레포의 모든 요리 책에서 사용할 수 있습니다.요리사 - 요리사의 요리 책에서 코드를 공유하려면 어떻게해야합니까?

나는 몇 가지 솔루션을 생각할 수 있습니다 :

  • 은, 보석 만들기 요리사 실행의 일환으로 보석을 설치합니다. 이것은 잔인한 것 같습니다.
  • 파일을 폴더에 넣고 해당 폴더를 래서 피 파일의 $LOAD_PATH에 추가하십시오. 나는 셰프 서버가 레포에 대해 아무 것도 모르기 때문에 실제 배치에서 작동하지 않을 것이라고 생각합니다.
  • 파일을 폴더에 넣고 각 요리 책의 라이브러리 디렉토리로 심볼릭 링크하십시오.

마지막 옵션은 가장 실용적인 것처럼 보입니다. 내가 원하는 것을 더 잘/더 관용적으로 할 수있는 방법이 있습니까?

+0

"방법"은 순수한 루비 코드를 말하는가 아니면 요리사의 DSL을 사용하여 조리법에 넣을 수있는 코드인가? 순수한 Ruby라면 보석을 사용하는 것이 가장 좋은 방법 일 수 있습니다. 단 몇 줄의 코드 만있는 경우가 아니면 지나치게 과장된 것으로 볼 수 없습니다. 요리사 코드 인 경우 LWRP가 포함 된 라이브러리 요리 책을 만들고이를 최상위 애플리케이션 요리 책에 포함 시키십시오. 이 두 번째 방법은 순수한 Ruby 라이브러리에서 작동하지만 확실하지는 못했습니다. – cassianoleal

+1

주로 순수 루비 코드입니다. 어쩌면 십여 가지 유틸리티 방법 일 수도 있습니다. Chef의 의존성 관리에 익숙하지는 않지만 라이브러리 폴더에 공유 코드가있는 요리 책을 만드는 것이 효과가 있는지 궁금합니다. – dantswain

+0

방금 ​​시도했지만 효과가없는 것으로 보입니다. 나는 아직도 보석 경로가 최고라고 생각한다. :) – cassianoleal

답변

17

다른 요리 책의 라이브러리 정의 기능을 사용할 수 있지만 제공 요리 책에 요리 책 depend이 있다는 요리사에게 알려야합니다.

요리 책 A의 경우에 따라서, 예를 들어, 당신은 몇 가지 기능 f을 제공하는 libraries/default.rb, 당신은 너무 오래 B의 metadata.rb 파일이 라인을 포함로 요리 책 B에서 액세스 할 수 있습니다

:

depends "A" 

가 참조 자세한 내용은 metadatalibraries의 요리사 문서를 참조하십시오.

+0

유망한 소리! 나는 내일 그것을 시도 할 것이다. – dantswain

+0

포기하지 마세요! 시도 할 시간이 없었습니다. – dantswain

+1

마지막으로 구현할 수있는 기회가있었습니다. 잘 했어! – dantswain

0

3 별개의 요리사 자원 중 하나의 형태로 코드를 공유 할 수 있도록 옵션 (1 LWRP, 2 HWRP) 또는 방법 (3. "라이브러리")가있다. LWRP를 먼저 고려해 보시기 바랍니다. 나는 언급 된 기술 들간의 차이점을 설명하는 데있어 매우 좋은 것으로 나타났습니다 (this answer).

관련 문제