BundlerでJekyllを使う
Bundlerは、必要なgemとバージョンを追跡しインストールすることで、Rubyプロジェクトに一貫した環境を提供します。
BundlerはJekyllで使用できる素晴らしいツールです。プロジェクト毎に依存関係を追跡するため、異なるプロジェクトで異なるバージョンのJekyllを使用する場合に便利です。
加えて、(オプションで)プロジェクトフォルダにインストールでき、実行時のパーミッションの問題を回避できます。
通常Jekyllを使用する場合、システムのデフォルトgemインストールディレクトリにJekyllをインストールし、jekyll new
を実行します。このチュートリアルでは、プロジェクトディレクトリの外にgemをインストールせずにBundlerで新しいJekyllプロジェクトを作成する方法を示します。
Jekyllを使い始める最もシンプルな方法ではありません
このチュートリアルはシステムワイドのgemインストールをせずに、Bundlerを使用してJekyllをセットアップすることを助けます。デフォルトのgemインストールディレクトリにjekyllをインストールしたい場合は、クイックスタートがよいかもしれません。
始める前に
このチュートリアルでは、RubyとBundlerのインストールが必要です。インストール手順は、それぞれのwebサイトをご確認ください。
Bunblerの初期化
まず始めに行うことは、プロジェクト用の新しいディレクトリを作り、bundle init
を実行することです。これは、(空のGemfileを作ることで)新しいBundlerプロジェクトを作成します。
mkdir my-jekyll-website
cd my-jekyll-website
bundle init
Bundlerインストールパスの設定
このステップはオプションです。プロジェクトのサブディレクトリ./vendor/bundle/
にgemをインストールするため、Bundlerの設定を行います。
これを行う利点は、gem install
で使用される場所ではなく、依存関係をプロジェクトフォルダにgemをインストールすることです。これにより、Rubyのインストール方法に応じて、gemのインストール中に発生する可能性がある権限エラーを回避できます。
このステップを飛ばすと、Bundlerは依存関係をgem install
で使用される場所にインストールします。
bundle install --local path vendor/bundle
Bundler設定は永続的です
この手順はプロジェクト毎に1回だけ必要です。Bundlerは設定を./.bundle/config
に保存するので、将来のgemは同じ場所にインストールされます。
Jekyllを追加する
次は、新しいプロジェクトが依存するJekyllを追加するためにBundlerを使用します。このコマンドはJekyll gemをGemfileに追加し、./vendor/bundle/
フォルダ(カスタムパスを設定していない場合はデフォルトのgemインストールディレクトリ)にインストールします。
bundle add jekyll
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の通常のコマンドは全て利用できますが、プロジェクトフォルダにインストールしたJekyllのバージョンをBundlerで実行するためにbundle exec
をコマンドの前につけることを忘れないでください。
ソース管理へのコミット
新しいサイトをバージョン管理で保存している場合、./vendor/
と./.bundle/
フォルダにはユーザーやプラットフォーム固有の情報が含まれているため無視したいでしょう。新しいユーザーは最新のGemfile
とGemfile.lock
に基づいて正しい依存関係をインストールできます。Gemfile
とGemfile.lock
はどちらもチェックインが必要です。必要に応じて、次の.gitignore
を使用してください。
.gitignore
# Ignore metadata generated by Jekyll
_site/
.sass-cache/
.jekyll-cache/
.jekyll-metadata
# Ignore folders generated by Bundler
.bundle/
vendor/