Sono abbastanza nuovo da Ruby e Chef, volevo sapere se esiste un modo per creare un file usando un modello? Ho provato a cercarlo ma non ho trovato molte cose. Sto provando a creare un file di lista nera e inserisco alcune regex tramite lo chef. Quindi volevo aggiungere gli attributi e usare un template.erb
per creare il file mentre esegui lo chef. Qualche suggerimento, puntatori?Crea file usando template.erb
11
A
risposta
21
Chef ha risorsa speciale denominata template, per creare file da modelli. Devi inserire il tuo modello all'interno del libro di cucina sotto modelli/directory di default e poi usarlo nella tua ricetta, fornendo le variabili.
libri di cucina/my_cookbook/templates/default/template.erb:
# template.erb
A is: <%= @a %>
B is: <%= @b %>
C is: <%= @c %>
libri di cucina/my_cookbook/Ricette/default.rb:
template "/tmp/config.conf" do
source "template.erb"
variables(:a => 'Hello', :b => 'World', :c => 'Ololo')
end
3
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
Così a
, b
e c
ora availible come variabili nel modello
OSSIA
# template.erb
A is: <%= @a %>
B is: <%= @b %>
C is: <%= @c %>
Risultato =>
# result.txt:
A is Hello
B is World
C is Ololo
oh, buono a sapersi :) mai usato Chef – fl00r
Grazie Draco. :) Questo e 'esattamente quello che stavo cercando. – noMAD
@Draco: avere una domanda. Quindi qui, ho bisogno di creare il file nella ricetta giusto? Intendo dire che il codice fl00r ha scritto, dovrebbe andare nella ricetta? – noMAD