非HTMLファイルのテンプレート化に[〜#〜] erb [〜#〜](Rubyのテンプレートシステム)が必要です。
(代わりに、.Java、.cs、...などのソースファイルに使用したい)
"execute" Rubyコマンドラインからのテンプレート?
Ruby/binディレクトリに必要なものがすべて揃っているはずです。私の(WinXP、Ruby 1.8.6)システムでは、Ruby/bin/erb.bat
erb.bat [switches] [inputfile]
-x print Ruby script
-n print Ruby script with line number
-v enable verbose mode
-d set $DEBUG to true
-r [library] load a library
-K [kcode] specify KANJI code-set
-S [safe_level] set $SAFE (0..4)
-T [trim_mode] specify trim_mode (0..2, -)
-P ignore lines which start with "%"
そう erb your_erb_file.erb
は、結果をSTDOUTに書き込む必要があります。
(編集:windowsにはerb.batと単なる「erb」があります。batファイルはerbの単なるラッパーであり、同じコマンドがどのOSでもほぼ同じように動作するはずです)
prag prog book の議論を参照してください(ページの半分ほど下から始まります)。
また、Jack HerringtonがRuby-/ERBを使用したコード生成について 本全体 を書いたことにも注意してください。
Rubyそれを行うスクリプト。APIのドキュメントは次のとおりです。 http://www.Ruby-doc.org/stdlib/libdoc/erb/rdoc/
例えば:
template = ERB.new File.read("path/to/template.erb"), nil, "%"
template.result(binding)
(バインディングは、テンプレートが必要とする@varsとのバインディングです。)
別のオプションは、Ruby -eを使用することです。これは、ERB itslefが非常に単純であるためです。
何かのようなもの:
Ruby -rerb -e "puts ERB.new(File.read(<file name here>)).result"
ただし、テンプレートをレンダリングするコンテキストがあると想定しています。そのコンテキストをどのように取得する予定ですか。例として、チェックアウト:
Ruby -rerb -e "hello = 'hello'; puts ERB.new('<%= hello %> world').result(binding)"
バインドとしてhello
変数を定義したトップレベルを使用して、「hello world」を出力します。
ERBをErubisに切り替えることができる場合、問題解決は次のように簡単です。
require 'erubis'
template = File.read("sample_file.erb")
template = Erubis::Eruby.new(template)
template.result(:your_variable => "sample")
Puppetテンプレートをテストしようとしたときにこの質問を見つけました。
このソリューションで終了しました:
foo.erb
ファイルを作成するfoo.vars.erb
すべてのテンプレート変数をその新しいファイルに入れます、例えば:
<% @my_param="foo bar" %>
<% @another_param=123 %>
または(同等):
<%
@my_param="foo bar"
@another_param=123
%>
コマンドラインでこれを実行します:
cat foo.vars.erb foo.erb | erb
これで、完全にレンダリングされたテンプレートが標準出力に印刷されます。そこから出力を手動で確認するか、diff(または他のツール)を使用して、事前にレンダリングされた出力と比較できます。
これは良い基本的な記事です- http://rrn.dk/rubys-erb-templating-system そしてもう1つ- http://www.stuartellis.eu/articles/erb/
これについてコメントしようとしましたが、コメントリンクは利用できません。
私はこれを使用しています:
template = ERB.new File.new("path/to/template.erb").read, nil, "%"
template.result(binding)
上記の投稿から:そして、私はそれが問題であると思うものを見つけました:
次のようなDOS BATCHファイルを作成しています。
%Java_HOME%\bin\jar -xvf <%=inputfile%>...
そして、私は奇妙な問題を見つけました-上記のコードで実行すると、これが得られます:
Processing Template test.txt
erb):2:in `render': compile error (SyntaxError)
erb):2: syntax error, unexpected tSTRING_BEG, expecting $end
erbout.concat "\n"
^
from DBUser.rb:49:in `render'
from DBUser.rb:43:in `each'
from DBUser.rb:43:in `render'
from DBUser.rb:81
私は次のことを試しましたが、私の特定の問題を回避しました-これが誰にとっても正しい答えかどうかわからない...
template = ERB.new File.new("path/to/template.erb").read
template.result(binding)