我在chef cookbook
中有一个erb 模板
,它为我的vagrant
环境和我的vhost
配置了我的vhost
aws opsworks
环境。我想在我的持续集成服务器上使用这个模板,在它推出之前为我的非 Chef 管理的机器生成虚拟主机。
假设我有以下 erb:
<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 的参数,或者我是否需要创建自定义库。如果我需要一个自定义库,它会是什么样子?
最佳答案
从 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>
关于ruby - 我可以从命令行传递由 erb 呈现的变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24963243/