我在erb template
中有一个chef cookbook
,用于为我的vhost
环境和我的vagrant
环境配置aws opsworks
。我想在我的持续集成服务器上使用这个模板,为我的非厨师托管机器生成vhost,然后再推出它。
假设我有以下错误:
<VirtualHost <%= @params[:http_host] %>:<%= @params[:http_port] || node['apache']['listen_ports'].first %>>
ServerName <%= @params[:server_name] %>
ServerAlias <% @params[:server_aliases].each do |a| %><%= a %> <% end %>
DocumentRoot <%= @params[:docroot] %>
</VirtualHost>
如果我想直接致电erb
,我如何填充这些变量?
我知道我可以调用erb -r library vhost.conf.erb
加载要利用的库,可以将变量设置为erb的参数,还是需要创建自定义库。如果我需要一个自定义库,那会怎么样?
答案 0 :(得分:4)
从Ruby 2.2开始,你可以set local variables in Erb from the command line。
您需要更改代码以使用局部变量而不是实例变量。例如,如果您(从代码中删除):
<VirtualHost <%= http_host %>:<%= http_port %>>
然后你可以用:
来调用它$ erb http_host=http://example.com http_port=1234 my_file.erb
,结果将是:
<VirtualHost http://example.com:1234>