Получить полный путь к сообщению в Jekyll/Octopress

В 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 он волшебным образом работает......


person Jinghao Shi    schedule 06.10.2013    source источник
comment
То, что вы ищете, уже есть в Вопросе Как получить полный путь к сообщению Markdown   -  person SACn    schedule 27.03.2017


Ответы (1)


Вы можете ознакомиться с Post#permalink документацией. . Он должен делать то, что вы хотите, без необходимости создавать новые плагины.

(если я вас неправильно понял, возможно, content_dir метод, который вы ищете)

person agarie    schedule 08.10.2013
comment
permalink(например, /2012/01/01/something/index.html) — это не то, что мне нужно. Мне нужен полный путь к почтовому файлу в Linux. Кроме того, для containing_dir у меня нет source и dir для передачи. Было бы идеально, если бы я мог получить доступ к @base и @name Поста, это именно то, что я хочу. - person Jinghao Shi; 09.10.2013
comment
Дело в том, что я пишу Liquid Tag, который показывает историю git для почтового файла. В render я могу получить только ликвидный хэш сообщения, поэтому я хочу объединить полный путь в хэше данных сообщения. - person Jinghao Shi; 09.10.2013
comment
Больше всего меня беспокоит то, что мой собственный метод to_liquid вообще не действует. я просто не понимаю зачем.... - person Jinghao Shi; 09.10.2013
comment
Ну, вы использовали древнюю версию Jekyll, и с тех пор было приложено много усилий для ее улучшения. Всегда обновляйте свои библиотеки! :П - person agarie; 10.10.2013
comment
Год, дело в том, что я использую Octopress, который немного устарел... Я подумываю вернуться к чистому Jekyll. - person Jinghao Shi; 10.10.2013