Джекилл в Windows: фрагменты не работают

Я обновился до последней версии JekyllBuild (1.0.3), прежде чем я всегда использовал RC. После обновления парсинг кодов (с Pygments) больше не работает. Я всегда получаю следующую ошибку:

C:/Ruby193/lib/ruby/gems/1.9.1/gems/posix-spawn-0.3.6/lib/posix/spawn.rb:162: warning: cannot close fd before spawn
←[31m  Liquid Exception: No such file or directory - /bin/sh in 2012-01-17-test-post.md←[0m

Кто-нибудь тоже сталкивался с этой проблемой?

Я не имею понятия о Ruby, поэтому я не могу отлаживать это сам:(

10 ответов

Решение

Я была такая же проблема. Кажется, есть проблема в Pygments.rb 0.5.1. При откате на Pygments 0.5.0 ошибка исчезла.

gem uninstall pygments.rb --version ">0.5.0"
gem install pygments.rb --version "=0.5.0"

Надеюсь это поможет.

Продолжая объяснение zzheng, если у вас все еще есть проблемы, попробуйте запустить gem list, Затем убедитесь, что pygments.rb (0.5.2) не установлен Если это так, просто запустите эту команду.

gem uninstall pygments.rb --version "=0.5.2"

Это должно решить вашу проблему, и вы сможете снова и снова с радостью публиковать с Jekyll в Windows.

РЕДАКТИРОВАТЬ: Кроме того, исходя из моего собственного опыта, это может вызвать другую ошибку. Liquid Error: Failed to get header. in 2013-07-20-post-name-here.md, (Неподтвержденное) решение - установить Python 2.7.*, Если вы этого еще не сделали, хотя некоторые люди сообщают, что это не решает проблему.

Дальнейшее чтение:

Джекилл Гитхуб № 1181

Pygments.rb Github Issue # 45

Запустить jekyll --server не удалось в Win7

Если вы добавите highlighter: false в ваш config.yml, вы можете избежать загрузки Pygments вообще

В последнее время я нашел лучший способ развертывания jekyll или любой другой среды в Windows с использованием http://scoop.sh/ или https://chocolatey.org/.


Эта ошибка в основном по той причине, что Windows Shell не может найти эту команду "которая", кроме Cygwin и MinGW. Я думаю, что лучшим решением является модификация popen.rb

к этому ниже:

# Detect a suitable Python binary to use. We can't just use `python2`
# because apparently some old versions of Debian only have `python` or
# something like that.
def python_binary
    if RUBY_PLATFORM =~ /(mswin|mingw|cygwin|bccwin)/
        return 'python'
    end
    @python_binary ||= begin
        `which python2`
        $?.success? ? "python2" : "python"
    end
end

Есть также некоторые детали в соответствии с этой страницей.

Добавив к тому, что сказал @noobcode, вы можете продолжать использовать pygments.rb если вы добавите каталог Python27 (где бы вы его не сохранили) к своему пути (как другой пользователь, упомянутый в ответе на ветку выше).

Те, кто не имеет ни малейшего представления, как добавить каталог в их PATH, должны посетить этот сайт.

Посмотрите на https://github.com/juthilo/run-jekyll-on-windows/. Он помогает с проблемами Jekyll в Windows, включая Pygments (с https://github.com/juthilo/run-jekyll-on-windows/ и выше).

Для меня исправлением было добавить символическую ссылку на python.exe с именем python2.exe

Сделайте это с повышенными привилегиями в каталоге, где установлен python 2.x:

mklink python2.exe python.exe

Я знаю, что это ответ, но делюсь своим опытом. Таким образом, похоже, что проблема заключается в pygments.rb установки ruby. После установки jekyll и попытки запуска на локальном хосте в файле сообщений по умолчанию выдается сообщение об ошибке. Удалив код подсветки синтаксиса из файла разметки (см. Ниже) и удалив ссылку на фрагменты из файла _config.yml, я смог запустить его на локальном хосте.

{% выделите рубин%}
def print_hi(name) puts "Hi, #{name}" end print_hi('Tom') prints 'Hi, Tom' to STDOUT.{% endhighlight%}

Удалить зачеркнутые линии

Изменения сработали, однако, еще предстоит выяснить, есть ли возможный способ использовать pygments.rb для подсветки кода.

Зайдите в каталог, который имеет python.exe и скопировать и вставить его в новый файл с именем python2.exe, Исправлена!

Просто для справки тем, кто сталкивается с такой же проблемой, как я. Сначала я установил python 2.7.6, а затем установил python 3.3.0. Поэтому переустановка Python 2.7.6 устранила проблему для меня. pygments.rb (0.5.4) Python 2.7.6 ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0] jekyll 1.4.3 OSX 10.8.5

Другие вопросы по тегам