Создать файл с помощью template.erb

Я новичок в рубине и шеф-поваре, я хотел знать, есть ли способ создать файл с помощью шаблона? Я попытался найти его, но не мог найти много материала. Попробуйте создать файл черного списка и вставьте в него некоторое регулярное выражение через шеф-повара. Поэтому я хотел добавить атрибуты и использовать template.erb для создания файла во время работы шеф-повара. Любые подсказки, указатели?

Ответ 1

Chef имеет специальный ресурс с именем template для создания файлов из шаблонов. Вам нужно поместить ваш шаблон в кулинарную книгу под каталог шаблонов/по умолчанию, а затем использовать его в своем рецепте, указав переменные.

cookbooks/my_cookbook/templates/default/template.erb:

# template.erb
A is: <%= @a %>
B is: <%= @b %>
C is: <%= @c %>

кулинарные книги /my _cookbook/recipes/default.rb:

template "/tmp/config.conf" do
  source "template.erb"
  variables( :a => 'Hello', :b => 'World', :c => 'Ololo' )
end

Ответ 2

require 'erb'
class Foo
  attr_accessor :a, :b, :c
  def template_binding
    binding
  end
end

new_file = File.open("./result.txt", "w+")
template = File.read("./template.erb")
foo = Foo.new
foo.a = "Hello"
foo.b = "World"
foo.c = "Ololo"
new_file << ERB.new(template).result(foo.template_binding)
new_file.close

Итак a, b и c теперь доступны в качестве переменных в вашем шаблоне

т.е.

# template.erb
A is: <%= @a %>
B is: <%= @b %>
C is: <%= @c %>

Результат = >

# result.txt:
A is Hello
B is World
C is Ololo