Bundlerを使ったJekyllの使い方

2018年3月6日 mkasberg mkasberg

Bundlerは、必要なgemとそのバージョンを正確に追跡し、インストールすることで、Rubyプロジェクトに一貫性のある環境を提供します。

Bundlerは、Jekyllで使用するのに最適なツールです。プロジェクトごとに依存関係を追跡するため、異なるプロジェクトで異なるバージョンのJekyllを実行する必要がある場合に特に役立ちます。

さらに、依存関係をプロジェクトフォルダにインストールできる(オプション)ため、そうでなければ発生する可能性のある権限の問題を回避するのに役立ちます。Jekyllを使用する通常の方法は、Jekyllをシステムのデフォルトのgemインストールディレクトリにインストールしてから、jekyll newを実行することです。このチュートリアルでは、Bundlerを使用して、プロジェクトディレクトリの外部にgemをインストールせずに、新しいJekyllプロジェクトを作成する方法を説明します。

これはJekyllを使い始める最も簡単な方法ではありません

このチュートリアルは、Bundlerを使用して、オプションでシステム全体のgemをインストールせずにJekyllをセットアップするのに役立ちます。 jekyllコマンドをデフォルトのgemインストールディレクトリにインストールする場合は、クイックスタートを参照してください。

始める前に

このチュートリアルを完了するには、RubyBundlerがインストールされている必要があります。インストール手順については、それぞれのWebサイトをご覧ください。

Bundlerの初期化

まず、プロジェクトの新しいディレクトリを作成し、bundle initを実行します。これにより、新しいBundlerプロジェクトが作成されます(空のGemfileを作成することにより)。

mkdir my-jekyll-website
cd my-jekyll-website
bundle init

Bundlerインストールパスの設定

この手順はオプションです。この手順では、gemを./vendor/bundle/プロジェクトサブディレクトリにインストールするようにBundlerを設定します。これを行う利点は、bundlerがgem installで使用される場所ではなく、プロジェクトフォルダ内にgemをインストールすることです。これにより、Rubyのインストール方法によっては、gemのインストール中に発生する可能性のある権限エラーを回避できます。この手順をスキップすると、Bundlerは依存関係をgem installで使用される場所にインストールします。

bundle config set --local path 'vendor/bundle'
Bundlerの設定は永続的です

この手順は、プロジェクトごとに1回だけ必要です。Bundlerは設定を./.bundle/configに保存するため、今後のgemは同じ場所にインストールされます。

Jekyllの追加

次に、Bundlerを使用して、Jekyllを新しいプロジェクトの依存関係として追加します。このコマンドは、Jekyll gemをGemfileに追加し、./vendor/bundle/フォルダ(カスタムパスを設定しなかった場合はデフォルトのgemインストールディレクトリ)にインストールします。

bundle add jekyll

Jekyllスキャフォールドの作成

Jekyllがインストールされたので、それを使用してサイトのスキャフォールディングを作成できます。フォルダは空ではなく、すでにいくつかのBundlerファイルが含まれているため、--forceパラメータが必要です。 Gemfileがすでに存在する場合、Jekyllが混乱するため、bundle installは個別に実行します。

bundle exec jekyll new --force --skip-bundle .
bundle install

サイトの提供

新しいWebサイトの準備ができました! bundle exec jekyll serveでWebサイトを提供し、http://127.0.0.1:4000でアクセスできます。ここから、サイトを独自に開発し続けることができます。すべての通常のJekyllコマンドを使用できますが、BundlerがプロジェクトフォルダにインストールされているJekyllのバージョンを実行するように、bundle execというプレフィックスを付ける必要があります。

ソース管理へのコミット

新しいサイトをバージョン管理に保存する場合は、./vendor/および./.bundle/フォルダにユーザーまたはプラットフォーム固有の情報が含まれているため、無視する必要があります。新しいユーザーは、チェックインする必要があるGemfileGemfile.lockに基づいて正しい依存関係をインストールできます。必要に応じて、この.gitignoreを使用して開始できます。

.gitignore

# Ignore metadata generated by Jekyll
_site/
.sass-cache/
.jekyll-cache/
.jekyll-metadata

# Ignore folders generated by Bundler
.bundle/
vendor/