0
0

More than 3 years have passed since last update.

断線状態で Jekyll 遠隔テーマを使いたかったので

Last updated at Posted at 2021-09-17

ネットワークに接続していない環境で Jekyll 遠隔テーマを利用したサイトの保守をする方法を試してみました。


Jekyll を使って担当している講義の静的ウェブサイトを運営しています。このウェブサイトでは

GitHub は Jekyll は 10 種類程度のテーマを選択することができますが、それに飽き足らない場合には GitHub にホスティングされている遠隔テーマ(remote theme)に対応したテーマを利用することもできます。わたしが利用している basically basic というテーマもそうした遠隔テーマのひとつです。

遠隔テーマの使い方は簡単で、基本的には Gemfile をすこし調整した上で、_config.yml のなかの普通は theme: <テーマの名前> と書くところを remote_theme: "<テーマの名前>" に置き換えるだけです。具体的な設定については遠隔テーマ(remote theme)の内容やbasically basicのReadmeを見て下さい。具体的な設定については私のサイトのリポジトリのなかの Gemfile_config.yml が参考になるでしょう。

これでしばらく快適に過していたんですが、ひとつ困ったことを見つけました。移動中、ネットワーク接続を停止しているときに bundle exec jekyll build ... すると、サイトの再構築がエラーを生じるのです。原因は remote_theme: 設定があると、再構築のたびに GitHub にアクセスするためのようです。Gemfile に該当する Gem を追加してもだめでした。

悩み

remote_theme: 機能は使いたいけれど、断線環境では再構築ができないという悩みです。

解決の方針

そこで、Jekyll の環境設定を二種類用意することにしました。

遠隔テーマ設定 (_config.yml)
こちらの設定は GitHub に push するためのものです。すでに書いたように、この設定では断線環境での再構築ができません。

ローカルテーマ設定 (etc/_config.yml)
こちらの設定は手元でビルドするためのものです。Gemfile に記載したテーマの Gem を利用して環境を構築し、手元のウェブサーバで内容を確認できます。環境が手元のパソコンに閉じているため、断線環境下で利用できます。

以下に示すように _config.ymletc/_config.yml の内容の違いは、前者が remote_theme: 設定を用いるのに対し、後者が theme: 設定を施す点だけです。

70,71c70,71
< remote_theme: "mmistakes/jekyll-theme-basically-basic"
< #theme: jekyll-theme-basically-basic
---
> #remote_theme: "mmistakes/jekyll-theme-basically-basic"
> theme: jekyll-theme-basically-basic

そして以下がサイト再構築に用いているスクリプトです。

#!/bin/sh

rm -f etc/_config.yml
cat _config.yml | sed -e 's/^remote_theme/#remote_theme/' -e 's/^#theme:/theme:/' > etc/_config.yml
bundle exec jekyll build --config etc/_config.yml --destination $HOME/Sites/classes --incremental --watch $*

_config.yml の内容を元にテーマ設定を置換したものを、etc/_config.yml に生成し、bundle exec jekyll build で生成したばかりの etc/_config.yml を利用します。

サイトの保守には、_config.yml を編集し、手元での再構築のための設定はその都度、自動生成されます。

これで断線環境でも、サイトの保守ができるようになりました。もちろん、サイトを公開するときはネットワークに接続しますけれど。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0