Обращение Chef LWRP обратно к поваренной книге, содержащей вызываемый ресурс

У меня есть поваренная книга, содержащая LWRP и несколько файлов в папке «файлы».

cookbook_file put_it_here do
  source myfile
end

Рецепт в другой книге рецептов, который вызывает этот ресурс, будет искать в каталоге «файлы» своей собственной книги рецептов, а не в файлах книги рецептов, в которой находится ресурс.

Я пытался использовать cookbook_name, но это по-прежнему разрешает рецепт, вызывающий ресурс, поэтому приведенный ниже код не работает.

cookbook_file put_it_here do
  source myfile
  cookbook cookbook_name
end

Как я могу обратиться к каталогу файлов поваренной книги, в котором находится ресурс, без необходимости его жесткого кода?


person red888    schedule 02.10.2016    source источник


Ответы (1)


К сожалению, вам просто нужно жестко закодировать это.

Мы не раскрываем это напрямую для LWRP, хотя технически вы можете разобрать его из self.class.to_s. Для Poise у меня есть штука, которая реконструирует название поваренной книги на основе данных манифеста, но это, вероятно, не поможет вам, если вы не захотите выпить моего kool-aid.

person coderanger    schedule 02.10.2016
comment
Ах, хорошо, спасибо, кстати, это не антипаттерн, не так ли? Я полагаю, я посмотрю некоторые другие поваренные книги, но это довольно распространено? - person red888; 02.10.2016
comment
Да, это довольно часто и раздражает. Вот почему я исправил это для всех своих поваренных книг :) Я обычно не беспокоюсь о том, как работает Chef core, если я могу исправить это сам. - person coderanger; 03.10.2016