从命令行向ERB传递绑定或参数

我最近一直在使用命令行中的erb。 我想制作一个简单的简单erb模板,例如以下内容:

 Hello. My name is . I hope your day is . 

如果我跑,这是有效的

 erb -T - thatfile.erb 

我想要做的是使namequality可以从命令行参数传递,以便我可以做类似的事情:

 ./thatfile.erb "Bill" "super" 

从bash提示符做同样的事情。

我知道我可以编写一个ruby脚本,只读取该模板,然后使用ERB.new(File.read("thatfile.erb")).result(binding) ,或者在END之后编写模板同样,但我正在寻找一种更轻量级的方法,如果它存在,因为我不想为我为此目的创建的每个erb脚本编写两个文件。

如果您使用的是unix,请尝试以下操作:

 $ cat 1.erb Hello. My name is <%= name %>. I hope your day is <%= quality %>. $ (echo '<% name="Joe"; quality="fantastic" %>' && cat 1.erb) | erb Hello. My name is Joe. I hope your day is fantastic. 

或者,您可以使用ruby脚本并将其作为库加载。

 # vars.rb @hello = 'kirk' 
 # template.html.erb 
<%= @hello %>
 $ erb -r './vars' template.html.erb 

我使用了BASH命令行快捷方式来处理环境变量。

外:

 STUFF=foo,bar erb input.html.erb >output.html 

内:

 <% stuff = ENV['STUFF'].split(',') %> 

在几分钟的电子搜索之后,我确定其他解决方案都是“自己编写erb包装器命令”的所有变体。 可能是错的,但我不会回去。

请注意,Ruby 2.2和更新版本提供了一个更好的解决方案,根据这个实现:

 erb var1=val1 var2=val2 my-template.erb