複数あるGithub Pages全てにGemをインストールするのは無駄

と思ったので

  1. github-pages ディレクトリを作成
  2. github-pages ディレクトリにgithub-pages gemをインストール
  3. 個々のページを子ディレクトリとして管理する。
  4. 子ディレクトリから github-pagesvendor/bundle.bundle/configへシンボリックリンクを作成して利用する

という方法で運用しようと思った。

github-pages ディレクトリの準備

github-pages に移動してからRubyのバージョンをgithubに合わせる

mkdir github-pages
cd github-pages
rbenv local 2.3.3

Gemfileを生成する

rbenv exec bundle init

Gemfileを変更する

# frozen_string_literal: true
source "https://rubygems.org"

gem 'github-pages'

インストールする

rbenv exec bundle install --path vendor/bundle

jekyllのプロジェクトディレクトリの作成

手順は

  1. jekyll new pagenameでテンプレート作成
  2. github-pages ディレクトリのファイルにリンクを貼る
  3. .ruby-versionへのリンク
  4. .bundleへのリンク
  5. vendorへのリンク
  6. _config.ymlへ除外項目の追加
  exclude:
    - vendor

となるが、この手順を毎回やるのはめんどう。 ってことでShellScript作った。

#!/bin/sh

# args.length < 1
if [ $# -lt 1 ]; then
  echo "no jekyll project dir"
  exit 1
fi

arg=$1

if [ -e $arg ]; then
  echo "$arg exist"
  exit 1
fi

# --- create jekyll template ----
bundle exec jekyll new $arg



# --- connect link and add vendor to exclude  ---
cd $arg

ln -sf ../.ruby-version ./.ruby-version
ln -sf ../.bundle ./.bundle
ln -sf ../vendor ./vendor

echo "exclude:"   >> _config.yml
echo "  - vendor" >> _config.yml

github-pagesjekyllsetup.shとして保存した場合、

cd github-pages
./jekyllsetup.sh projectname

github-pages ディレクトリ下にprojectnameディレクトリが作成され、 jekyllテンプレートが展開している。

もちろんリンクも除外項目も追加済み。