2014-10-20 3 views
2

Резюме

Могу ли я использовать LWRP от внешней поваренной книги без префикса имени поваренных книг? Например, если mycookbook содержит ресурс mylwrp, как я могу это сделать?имя Cookbook префикс при вызове LWRP

include_recipe 'mycookbook' # Contains "mylwrp" 
mylwrp "frobulator" do 
    frobulations 42 
end 

Подробность

Я написал LWRP, получившее название mycookbook_mylwrp с библиотекой поваренной книги использует нормальные ресурсы/макет поставщика следующего

mycookbook/ 
├── providers 
│   └── mylwrp.rb 
└── resources 
    └── mylwrp.rb 

было бы возможен

  • Храните LWRP в кулинарной книге mycookbook
  • Используйте LWRP без префикса mycookbook имя (mycookbook_mylwrp)

Я понимаю, что я могу создать совершенно новую поваренную книгу и назвать его «mylwrp» и использовать поставщиков по умолчанию следующим образом

mylwrp/ 
├── providers 
│   └── default.rb 
└── resources 
    └── default.rb 

но тогда я должен сделать специализированные кулинарные книги для каждого LWRP, который я хочу использовать таким образом.

ответ

1

Одним из вариантов является использование HWRP. Они перечислены в каталоге libraries, а не resources и providers. Если вы идете по этому маршруту, я бы заглянул в библиотеку poise, которая позволяет писать HWRP с той же тонкостью, что и LWRP.

Теперь, все, что сказано, вы делаете что-то, что явно выходит за пределы нормы. Сообщество используется для пользовательских поставщиков, которым присваивается пространство имен, в соответствии с объявленной ими куковой книгой. Если вы хотите поделиться этой кулинарной книгой с сообществом, вы можете вызвать некоторую путаницу. Даже если вы используете его только внутренне, он будет крутить кривую обучения для любых новых членов, которых вы приносите в свою команду. Поэтому, если у вас нет веских оснований для этого, я настоятельно рекомендую вам избежать этого.

С другой стороны, если у вас есть причина принуждения, я предлагаю вам поделиться ею, чтобы мы могли все извлечь выгоду из ваших мыслей.

+0

Причина была в основном косметической, поэтому она склонялась к простому помещению LWRP в свою собственную кулинарную книгу, чтобы получить желаемое имя. Но это хорошая информация, спасибо. –

+0

@FredClausen, если у них плотно связанные ресурсы, я бы действительно предложил вам посмотреть на 'poise'. Это позволяет писать HWRP так же просто, как писать LWRP. Я собираюсь взять член и монету на новый срок и назвать их MWRP (средние поставщики ресурсов). –

+0

Они не плотно связаны, поэтому я чувствую, что их в отдельных кулинарных книгах лучше.Это говорит, что я определенно буду читать о '' 'poise''', если мне нужно это сделать в будущем. И посмотрим, что еще предлагает равновесие. –

0

Нет, LWRPs являются глобальными, и поэтому импозантная поваренная книга предотвращает столкновения. Вам также не нужен include_recipe, который участвует только в запуске кода рецепта. Однако вам нужна линия depends в metadata.rb.

+0

На IRC Chef они упомянули, что использование HWRP может быть способом. –

+0

Это немного сложнее, но позволяет осуществлять прямой контроль над именованием классов. Вы не очень много рассказали о том, почему вы думаете, что это хорошая идея. Если вы пытаетесь сделать какую-то причудливую инъекционную зависимость, есть другие варианты, и я снова укажу, что ресурсы и поставщики глобальны, поэтому вы не можете повторно использовать существующие имена. – coderanger

Смежные вопросы