Передача параметров в функцию шаблона в thor

Я ищу способ передать параметры механизму шаблонов ERB в действии шаблона thors.

Я наткнулся на исходный код компоновщика cli, где действие шаблона thors используется следующим образом:

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)

Но когда я добавляю такие параметры в свои задачи thor, они не обнаруживаются ERB, я могу использовать только аргументы и функции в своем классе thor для установки переменных в шаблоне.

Я понятия не имею, как работает привязка в ruby, может быть, есть способ передать область через привязку к ERB.


person devboy    schedule 27.06.2011    source источник
comment
Какой код вы пробовали в своем файле Thor, который не работал?   -  person Dogbert    schedule 04.07.2011
comment
Я скопировал приведенный выше код, и он не уловил переданные параметры.   -  person devboy    schedule 06.07.2011


Ответы (2)


Используя переменные экземпляра, это должно работать.

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

Мой шаблон выглядит так:

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

Это работает для меня. Я не пробовал передавать определенные значения.

person Dr. Simon Harrer    schedule 09.09.2011

Я не могу найти никакой документации, чтобы ответить на этот вопрос, но, прочитав исходный код интерфейса командной строки Bundler, кажется, что если вы пытались сослаться на параметр :author_email внутри шаблона,

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

работает.

person workergnome    schedule 29.09.2011
comment
Эта работа и для меня тоже. Хэш opts, переданный template, называется config в шаблоне Erb. - person Kris; 07.10.2011