Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 从命令行向ERB传递绑定或参数_Ruby_Templates_Erb - Fatal编程技术网

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

Ruby 从命令行向ERB传递绑定或参数,ruby,templates,erb,Ruby,Templates,Erb,我最近一直在命令行中与erb打交道。我想制作一个非常简单的erb模板,例如: <%- name = "Joe"; quality = "fantastic" -%> Hello. My name is <%= name %>. I hope your day is <%= quality %>. $ cat 1.erb Hello. My name is <%= name %>. I hope your day is <%= quality

我最近一直在命令行中与erb打交道。我想制作一个非常简单的erb模板,例如:

<%- name = "Joe"; quality = "fantastic" -%>
Hello. My name is <%= name %>. I hope your day is <%= quality %>.
$ 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.
我想做的是使
name
quality
可以从命令行参数中通过,这样我就可以执行以下操作:

./thatfile.erb "Bill" "super"
从bash提示符开始,执行相同的操作


我知道我可以编写一个ruby脚本,只需在中读取模板,然后使用
ERB.new(File.read(“thatfile.ERB”)).result(binding)
,或者在
结束后编写模板,然后执行类似操作,但如果存在,我正在寻找一种更轻量级的方法,因为我不想为为此目的创建的每个erb脚本编写两个文件。

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

<%- name = "Joe"; quality = "fantastic" -%>
Hello. My name is <%= name %>. I hope your day is <%= quality %>.
$ 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.
$cat 1.erb
你好我的名字是。我希望你今天过得愉快。
$(回显“&&cat 1.erb)| erb
你好我叫乔。我希望你的一天是美好的。

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

外部:

STUFF=foo,bar erb input.html.erb >output.html
内部:

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


在几分钟的电子搜索后,我确定其他解决方案都是“自己编写erb包装器命令”的变体。可能是错误的,但我不会回头。或者,您可以使用ruby脚本并将其作为库加载

#vars.rb
@你好,柯克
#template.html.erb
$erb-r./vars'template.html.erb

请注意,Ruby 2.2及更新版本提供了一个更好的解决方案,该解决方案是根据以下内容实现的:


echo
升级到
cat-input.html.erb
,你会得到这样的信息,比如如何将数据从所谓的“逻辑”中分离出来,以及如何简单地坚持使用ruby。有没有办法用这种语法处理数组?使用逗号分隔的列表并拆分它们。它只获取字符串。当变量被引用为@vars时,这似乎对我不起作用。没有@也可以工作。@Daniel文档也这么说:)