Jekyll のバックアップ(No.4)
- keywords: [Jekyll, Ruby, Cygwin] description: Jekyllのインストール、設定などのメモ author: aterai pubdate: 2014-09-28T01:50:02+09:00
概要
Windows 7
+ Cygwin64
+ ruby 2.0.0
の環境で、Jekyll
をインストールしMarkdown
記法のテキストから静的サイトを生成します。
インストール
setup-x86_64.exe
などから、ruby
、rubygems
などをインストール~/.gemrc
を作成--- 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
gem
でインストールgem install jekyll
tr: invalid byte sequence in UTF-8 (ArgumentError)
とエラーになる場合- Cygwin - Ruby-1.9.3p327 - win32/registry - PIBを参考にして、
C:/cygwin64/usr/share/ruby/2.0.0/win32/registry.rb
を修正# # 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
- Cygwin - Ruby-1.9.3p327 - win32/registry - PIBを参考にして、
/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
とエラーになる場合- Problems compiling ffi 1.9.0 on cygwin 64bit ・ Issue #284 ・ ffi/ffi (via: 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
- Problems compiling ffi 1.9.0 on cygwin 64bit ・ Issue #284 ・ ffi/ffi (via: make fails on Cygwin64bit ・ Issue #317 ・ ffi/ffi)などを参考に、
Jekyll で google-code-prettify
- 参考: 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"}
結果
<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
markdown
のパーサーをredcarpet
に変更
# _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
で回避