Bundlerを使ってJekyllをインストールする
Bundlerを使ってローカルなDIRにJekyllをインストールしてサイトを立ち上げる。
システムにapt
とかgem
で入れたjekyll
とはちょっと違っていたのでメモ。
詳しくは英文だが公式サイトのここに書いてある。
Using Jekyll with Bundler | Jekyll • Simple, blog-aware, static sites
まずは、jekyll
サイト用のDIR(ここではMyJekyllSite)を作り、rbenv
で特定Rubyバージョンのローカルな環境を作る。
$ mkdir MyJekyllSite $ cd MyJekyllSite/ $ rbenv local 2.5.3 $ rbenv version 2.5.3 (set by /home/jgb/MyJekyllSite/.ruby-version)
bundler
の初期化コマンドを、この~/MyJekyllSite
ローカルで実行して、直下にGemfile
を書き出す。
$ rbenv exec bundle init Writing new Gemfile to ~/MyJekyllSite/Gemfile $ ls -a ./ ../ .ruby-version Gemfile
Gemfile
にまだgem
が何も書かれていない状態(コメントアウトされた"rails"が書いてあるだけ)で、bundle install --path vendor/bundle
を実行する。
$ bundle install --path vendor/bundle The Gemfile specifies no dependencies Resolving dependencies... Bundle complete! 0 Gemfile dependencies, 1 gem now installed. Bundled gems are installed into `./vendor/bundle` jgb@Bosch3:~/MyJekyllSite$ ls -a ./ ../ .bundle/ .ruby-version Gemfile Gemfile.lock vendor/
次のコマンドでGemfile
にjekyll
を書き足す。
$ bundle add jekyll
Gemfile
は次のようになっていてjekyll
が追加書きされているだけなのだが、そのわりに上記コマンドはいろいろしているっぽい。
実際このコマンドが正常に終われば、すでにjekyll
や関連する依存関係の gem はこのローカルDIRにインストールされている。
$ less Gemfile # frozen_string_literal: true source "https://rubygems.org" git_source(:github) {|repo_name| "https://github.com/#{repo_name}" } # gem "rails" gem "jekyll", "~> 3.8"
そして次のコマンドでScaffoldが書き出される。普通のjekyll new "sitename"
と違ってすでにあるGemfile
などを消さないように書き出す必要があるので、--force --skip-bundle
オプションが必須。
$ bundle exec jekyll new --force --skip-bundle . New jekyll site installed in ~/MyJekyllSite. Bundle install skipped. $ bundle install
あとはjekyll serve
の前にbundle exec
を付けてサーバを立ち上げれば、いつものhttp://127.0.0.1:4000
で初期サイトが見える。
$ bundle exec jekyll serve
Gemfile
に直接gem 'jekyll', '3.8.5'
などと手書きして、bundle install --path ./vendor/bundler
を実行しても問題ないようで、vendor/bundler
DIRの中にjekyll
本体と依存gemがインストールされる。ただ公式ドキュメントにある上記のような方法だと、生成された_config.yml
に以下のようなGemfile
関連をサイト構築対象から除外する設定が自動で書き込まれていて便利(ただしデフォルトのままではコメントアウトされているので外すこと)。
exclude: - Gemfile - Gemfile.lock - node_modules - vendor/bundle/ - vendor/cache/ - vendor/gems/ - vendor/ruby/