---
keywords: [Jekyll, Ruby, Cygwin]
description: Jekyllのインストール手順、エラーが発生した場合の修正方法、設定などのメモ
author: aterai
pubdate: 2014-09-28T01:50:02+09:00
---
#contents
* Summary [#summary]
`Windows` + `Cygwin64` + `ruby 2.0.0`の環境で、`Jekyll`をインストールし`Markdown`記法のテキストから静的サイトを生成します。
* インストール [#install]
- `setup-x86_64.exe`から、`gcc-core`、`make`、`ruby`、`rubygems`、`ruby-devel`、`libffi-devel`、`openssh`、`openssl`、`git`をインストール
- `~/.gemrc`を作成
#code{{
install: --no-document
update: --no-document
}}
- `gem`でインストール
gem install jekyll
-- `tr: invalid byte sequence in UTF-8 (ArgumentError)`とエラーになる場合
--- [http://seesaawiki.jp/w/kou1okada/d/Cygwin%20-%20Ruby-1.9.3p327%20-%20win32/registry Cygwin - Ruby-1.9.3p327 - win32/registry - PIB]を参考にして、`C:/cygwin64/usr/share/ruby/2.0.0/win32/registry.rb`を修正
#code{{
#
# Error
#
class Error < ::StandardError
module Kernel32
extend Fiddle::Importer
dlload "kernel32.dll"
end
# FormatMessageA = Kernel32.extern "int FormatMessageA(int, void *, int, int, void *, int, void *)", :stdcall
# def initialize(code)
# @code = code
# msg = "\0".force_encoding(Encoding::ASCII_8BIT) * 1024
# len = FormatMessageA.call(0x1200, 0, code, 0, msg, 1024, 0)
# msg = msg[0, len].force_encoding(Encoding.find(Encoding.locale_charmap))
# super msg.tr("\r", '').chomp
# end
FormatMessageW = Kernel32.extern "int FormatMessageW(int, void *, int, int, void *, int, void *)", :stdcall
def initialize(code)
@code = code
msg = "\0\0".force_encoding(Encoding::UTF_16LE) * 1024
len = FormatMessageW.call(0x1200, 0, code, 0, msg, msg.size, 0)
msg = msg[0, len].encode(Encoding.find(Encoding.locale_charmap))
super msg.tr("\r".encode(msg.encoding), '').chomp
end
attr_reader :code
end
}}
-- `/usr/lib/gcc/x86_64-pc-cygwin/4.8.3/../../../../x86_64-pc-cygwin/bin/ld: -lcrypt が見つかりません`とエラーになる場合
--- `libcrypt-devel`を`setup-x86_64.exe`からインストールして`gem install jekyll`を再実行
-- `Makefile:232: recipe for target 'ffi_c.so' failed`とエラーになる場合
--- [https://github.com/ffi/ffi/issues/284#issuecomment-33752957 Problems compiling ffi 1.9.0 on cygwin 64bit ・ Issue #284 ・ ffi/ffi] (via: [https://github.com/ffi/ffi/issues/317 make fails on Cygwin64bit ・ Issue #317 ・ ffi/ffi])などを参考に、`cygwin32-libffi`、`libffi-devel`、`pkg-config`などを`setup-x86_64.exe`からインストールして`gem install jekyll`を再実行
export PKG_CONFIG_PATH="/lib/pkgconfig"
gem install jekyll
-- `-lgmp が見つかりません`とエラーになる場合
--- `libgmp-devel`を`setup-x86_64.exe`からインストール
#code{{
gcc -shared -o stemmer.so porter.o porter_wrap.o -L. -L/usr/lib -L. -fstack-protector -Wl,--export-all-symbols -Wl,--enable-auto-image-base,--enable-auto-import -lruby220 -lpthread -lgmp -ldl -lcrypt
/usr/lib/gcc/x86_64-pc-cygwin/4.9.2/../../../../x86_64-pc-cygwin/bin/ld: -lgmp が見つかりません
collect2: エラー: ld はステータス 1 で終了しました
Makefile:254: ターゲット 'stemmer.so' のレシピで失敗しました
make: *** [stemmer.so] エラー 1
}}
* 実行 [#build]
- `jekyll new my-awesome-site`で`my-awesome-site`ディレクトリを作成
-- `/usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in 'require': cannot load such file -- bigdecimal (LoadError)`とエラーになる場合
--- `gem install bigdecimal`で`bigdecimal`をインストール
- `cd my-awesome-site && bundle exec jekyll build`でビルド
-- `LoadError: cannot load such file -- bigdecimal`とエラーになる場合
--- `./my-awesome-site/Gemfile`ファイルに`gem 'bigdecimal'`を一行追加
-- `LoadError: cannot load such file -- json`とエラーになる場合
--- `./my-awesome-site/Gemfile`ファイルに`gem 'json'`を一行追加
* Jekyll で google-code-prettify [#codeprettify]
- 参考: [http://fnordig.de/2011/09/02/kramdown-test/ fnordig.de]
パーサーを`kramdown`にして、行頭タブ(`4`スペース)ブロックの直後に`{:class="prettyprint"}`、または`{:.prettyprint}`を追加
def parse_pre(lines)
[%Q|#{lines.map {|line| "\t".concat(line) }.join("\n")}|, %Q|{:class="prettyprint"}|]
end
### サンプルコード
trayIcon.displayMessage("caption", "text", TrayIcon.MessageType.ERROR);
{:class="prettyprint"}
結果
#code{{
<h3 id="section">サンプルコード</h3>
<pre class="prettyprint"><code>trayIcon.displayMessage("caption", "text", TrayIcon.MessageType.ERROR);
</code></pre>
}}
`default.html`に`prettify.js`, `prettify.css`を追加
<link href="{{ ASSET_PATH }}/css/prettify.css" type="text/css" rel="stylesheet" />
</head>
<body onload="prettyPrint()">
...
<script src="{{ ASSET_PATH }}/js/prettify.js"></script>
</body>
* redcarpet [#redcarpet]
- `markdown`のパーサーを`redcarpet`に変更
-- [https://github.com/mojombo/jekyll/wiki/Configuration Configuration ・ mojombo/jekyll Wiki ・ GitHub]
-- [https://github.com/mrcaron/jekyll/commit/cf8fde495d1689c40b016c4155f4d48fe8377347 updated jekyll to latest RedCarpet version ・ cf8fde4 ・ mrcaron/jekyll ・ GitHub]
# _config.yml
markdown: redcarpet
redcarpet:
renderer: Redcarpet::Render::XHTML
extensions: ["xhtml", "fenced_code_blocks", "strikethrough", "no_intra_emphasis", "lax_spacing"]
- `no_intra_emphasis`
-- `<pre><code>`の中でも、アンダーライン(例: `InputMap im = combobox.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);`)が、`<em>...</em>`に変換されるので、`no_intra_emphasis`で回避
* Reference [#reference]
- [https://jekyllrb-ja.github.io/ Jekyll • シンプルで、ブログのような、静的サイト]
* コメント [#comment]
* Comment [#comment]
#comment
#comment