Jekyll の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Jekyll へ行く。
- Jekyll の差分を削除
--- keywords: [Jekyll, Ruby, Cygwin] description: Jekyllのインストール手順、エラーが発生した場合の修正方法、設定などのメモ author: aterai pubdate: 2014-09-28T01:50:02+09:00 --- #contents * 概要 [#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{{ --- gem: "--no-ri --no-rdoc --user-install" :benchmark: false :verbose: true :backtrace: true :update_sources: true :bulk_threshold: 1000 :sources: - http://gemcutter.org - http://gems.rubyforge.org/ - http://gems.github.com 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] - [https://jekyllrb-ja.github.io/ Jekyll • シンプルで、ブログのような、静的サイト] * コメント [#comment] #comment #comment