12

私はルビーとシェフにかなり慣れていません。テンプレートを使用してファイルを作成する方法があるかどうか知りたいですか?私はそれについて検索しようとしましたが、多くのものを見つけることができませんでした。ブラックリストファイルを作成し、シェフを介してそれに正規表現を挿入しようとしています。template.erbそこで、chefの実行中に属性を追加し、を使用してファイルを作成したいと思いました。ヒント、ポインタはありますか?

4

2 に答える 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

だからabそして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 に答える