11

トール テンプレート アクションで ERB テンプレート エンジンにオプションを渡す方法を探しています。

thors テンプレート アクションが次のように使用されているバンドラー cli ソースを見つけました。

opts = {:name => name, 
    :constant_name => constant_name, 
    :constant_array => constant_array, 
    :author_name => author_name, 
    :author_email => author_email
}

template(File.join("newgem/Gemfile.tt"),
           File.join(target, "Gemfile"),
            opts)

しかし、トール タスクにこのようなオプションを追加すると、それらは ERB によって検出されず、トール クラスで引数と関数のみを使用して、テンプレートに変数を設定できます。

ルビーでバインディングがどのように機能するかはわかりません。ERB へのバインディングを介してスコープを渡す方法があるかもしれません。

4

2 に答える 2

14

インスタンス変数を使用することで、機能するはずです。

@name = name
template("source","target")

私のテンプレートは次のようになります。

<test><%= @name %></test>

これは私にとってはうまくいきます。特定の値を渡すことは試していません。

于 2011-09-09T12:36:01.713 に答える
12

これに答えるドキュメントは見つかりませんが、Bundler CLI のソースを読むと、テンプレート内で :author_email パラメータを参照しようとしていた場合、

Author email: <%= config[:author_email] %>

動作します。

于 2011-09-29T20:35:42.800 に答える