Получить вызов кулинарную книгу в рамках шеф-повар пользовательского ресурса
У меня есть поваренная книга my_service
с пользовательским ресурсом write_config
, Этот ресурс называется из другой кулинарной книги node_a
,
my_service/resources/write_config.rb
:property :template_source, String, name_property: true property :calling_cookbook, String, required: true action :create do template "/tmp/test.txt" do source template_source cookbook calling_cookbook owner 'root' mode '0644' action :create end end
Узел кулинарной книги рецепт
node_a/default.rb
:my_service_write_config 'config.erb' do calling_cookbook 'node_a' end
Это прекрасно работает, но я хотел бы избавиться от calling_cookbook
имущество.
Есть ли способ автоматически получить calling_cookbook
название?
Решение
(Спасибо, coderanger!) Основной ресурс template
кажется оценивается в контексте вызова (node_a
) поваренная книга (?).
my_service/resources/write_config.rb
:property :template_source, String, name_property: true action :create do template "/tmp/test.txt" do source template_source owner 'root' mode '0644' action :create end end
Используя его в рецепте узла поваренной книги
node_a/default.rb
становится однострочником:... include_recipe 'my_service' my_service_write_config 'config.erb' ...
Ухоженная!
1 ответ
Это отслеживается автоматически как new_resource.cookbook_name
, Вам может понадобиться to_s
это потому, что каким-то образом это иногда заканчивается символом, но в остальном должно быть то, что вам нужно.
Также специально для шаблонов это уже поведение по умолчанию, если вы просто удалите cookbook
линия.