Как я могу хранить хэш на протяжении всего срока службы «сборки jekyll»?

Я кодирую пользовательский тег Liquid в качестве плагина Jekyll, для которого мне нужно сохранить некоторые значения до следующего вызова тега в текущем выполнении команды jekyll build.

Есть ли какое-то глобальное местоположение/пространство имен, которое я мог бы использовать для хранения и извлечения значений (предпочтительно пар "ключ-значение"/хэша)?


person user569825    schedule 08.08.2013    source источник


Ответы (1)


Вы можете добавить модуль с переменными класса для хранения постоянных значений, а затем включить модуль в свой класс тегов. Вам понадобятся соответствующие средства доступа в зависимости от типа переменных и назначений, которые вы, возможно, захотите сделать. Вот тривиальный пример реализации простого счетчика, который отслеживает количество вызовов тега в DataToKeep::my_val:

module DataToKeep
  @@my_val = 0

  def my_val
    @@my_val
  end

  def my_val= val
    @@my_val = val
  end
end

module Jekyll
  class TagWithKeptData < Liquid::Tag
    include DataToKeep

    def render(context)
      self.my_val = self.my_val + 1
      return "<p>Times called: #{self.my_val}</p>"
    end
  end
end

Liquid::Template.register_tag('counter', Jekyll::TagWithKeptData)
person Sean Redmond    schedule 09.08.2013