В Octopress я пытаюсь получить полный путь к файлу сообщения (что-то вроде ~/projects/site/source/_posts/2012-01-01-something.markdown
), расширяя класс Jekyll:Post
.
module Jekyll
class Post
alias_method :original_to_liquid, :to_liquid
def to_liquid
# test if this function is actually called
puts "hello"
original_to_liquid.deep_merge({
'full_path' => File.join(@base,@name)
})
end
end
end
Я называю этот файл full_path.rb
и помещаю его в папку plugins
. Как ни странно, моя функция to_liquid
никогда не вызывалась, так как сообщение hello
не отображалось.
Что еще более странно, я обнаружил, что date.rb
, поставляемый с Octopress, также определяет метод to_liquid
для class Post
, поэтому я добавляю туда строку full_path => File.join(@base,@name)
, и это работает! Я ооочень запутался.
Итак, мой вопрос: почему мой метод to_liquid
не вызвался?
ОБНОВИТЬ
После обновления jekyll с 0.12.0 до 1.2.1 он волшебным образом работает......