私はルビーとシェフにかなり慣れていません。テンプレートを使用してファイルを作成する方法があるかどうか知りたいですか?私はそれについて検索しようとしましたが、多くのものを見つけることができませんでした。ブラックリストファイルを作成し、シェフを介してそれに正規表現を挿入しようとしています。template.erb
そこで、chefの実行中に属性を追加し、を使用してファイルを作成したいと思いました。ヒント、ポインタはありますか?
質問する
14136 次
2 に答える
22
Chefには、テンプレートからファイルを作成するためのtemplateという名前の特別なリソースがあります。テンプレートをcookbook内のtemplates/defaultディレクトリに配置し、それをレシピで使用して変数を提供する必要があります。
クックブック/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
于 2012-10-05T16:29:22.123 に答える
6
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
今あなたのテンプレートの変数として利用可能です
IE
# template.erb
A is: <%= @a %>
B is: <%= @b %>
C is: <%= @c %>
結果=>
# result.txt:
A is Hello
B is World
C is Ololo
于 2012-10-05T15:14:01.947 に答える