16

最近、コマンドラインからerbをいじっています。たとえば、次のような単純な erb テンプレートを作成したかったのです。

<%- name = "Joe"; quality = "fantastic" -%>
Hello. My name is <%= name %>. I hope your day is <%= quality %>.

これは、実行すると機能します

erb -T - thatfile.erb

私がやりたいことはnamequalityコマンドライン引数から渡せるようにして、次のようなことができるようにすることです。

./thatfile.erb "Bill" "super"

bashプロンプトから同じことを行います。

そのテンプレートを読み取って を使用するルビー スクリプトを作成するERB.new(File.read("thatfile.erb")).result(binding)か、 の後にテンプレートを作成しENDて同様に行うことができることは承知していますが、存在する場合はより軽量なアプローチを探しています。この目的のために作成した erb スクリプトごとに 2 つのファイルを書きたいと考えています。

4

4 に答える 4

20

または、ruby スクリプトを使用してライブラリとして読み込むこともできます。

# vars.rb
@hello = 'kirk'
# template.html.erb
<div><%= @hello %></div>
$ erb -r './vars' template.html.erb
于 2015-05-04T18:58:57.377 に答える
15

環境変数の BASH コマンドライン ショートカットを使用しました。

外側:

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

中身:

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

数分間の電子検索の後、他の解決策はすべて「erbラッパーコマンドを自分で書く」というバリエーションであることがわかりました。間違っているかもしれませんが、私は戻りません。

于 2013-08-18T20:28:20.570 に答える
14

Ruby 2.2以降では、これに従って実装されたより優れたソリューションが提供されていることに注意してください。

erb var1=val1 var2=val2 my-template.erb
于 2016-09-24T09:57:09.450 に答える
11

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.
于 2013-07-27T07:40:18.723 に答える