今日の羊刈り。

自分のホームページをアップデートしようと思った。 2行の追加。

こいつはherokuで動いてるはずだから、単にindex.mdをいじって、 git pushするだけのはず。

ところが、ビルド中にRubyがOpenSSL対応していないというエラーで死ぬ。

remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Ruby app detected
remote: -----> Compiling Ruby/Rack
remote: -----> Using Ruby version: ruby-2.1.2
remote: -----> Installing dependencies using Bundler version 1.3.2
remote:        Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin --deployment
remote:        Could not load OpenSSL.
remote:        You must recompile Ruby with OpenSSL support or change the sources in your
remote:        Gemfile from 'https' to 'http'. Instructions for compiling with OpenSSL
remote:        using RVM are available at rvm.io/packages/openssl.
remote:        Bundler Output:
remote:        Could not load OpenSSL.
remote:        You must recompile Ruby with OpenSSL support or change the sources in your
remote:        Gemfile from 'https' to 'http'. Instructions for compiling with OpenSSL
remote:        using RVM are available at rvm.io/packages/openssl.
remote:  !
remote:  !     Failed to install gems via Bundler.
remote:  !
remote:  !     Push rejected, failed to compile Ruby app.
remote: 
remote:  !     Push failed
remote: Verifying deploy....
remote: 
remote: !	Push rejected to ikejihome.
remote: 

よくわからないが、Rubyのバージョンが古いから、このせいかもしれない。 .ruby-versionと、Gemfile内にあるRubyのバージョンを手元にあった、 2.2.3にして、Gemfile.lockを作りなおしてpush.

今度はインタプリタが入手できなかったらしい。

remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Ruby app detected
remote: -----> Compiling Ruby/Rack
remote:  !
remote:  !     Command: 'set -o pipefail; curl --fail --retry 3 --retry-delay 1 --connect-timeout 3 --max-time 20 https://s3-external-1.amazonaws.com/heroku-buildpack-ruby/ruby-2.2.3.tgz -s -o - | tar zxf -' failed unexpectedly:
remote:  !     
remote:  !     gzip: stdin: unexpected end of file
remote:  !     tar: Child returned status 1
remote:  !     tar: Error is not recoverable: exiting now
remote:  !
remote:  !     Push rejected, failed to compile Ruby app.
remote: 
remote:  !     Push failed
remote: Verifying deploy...
remote: 
remote: !	Push rejected to ikejihome.
remote: 

サポートしているRubyのバージョンはどれだ。 サポートページによると、Ruby 2.3.1が最新のようだ。

rbenv install 2.3.1 をしたいがバージョン一覧にでてこない。 無理矢理実行したら、ruby-buildのバージョンが古いからだと指摘された。 ruby-buildの最新バージョンをgitから取ってきて、 それを使って2.3.1を入れた。やれやれ。

herokuプロジェクト側のバージョンをいじって、Gemfile.lockを作ってpush. 同じエラー。

Heroku側の問題に違いない、検索したり、Herokuのコンソールにログインすると、 buildpackのURLってのが指定されてた。

なるほど、このbuildpackが古いのか。 というか、buildpackもコード内で指定しておくようにしろよ。

jekyllのbuildpackのオリジナルは、何年もメンテされていなくて、 誰かのフォークを使っていたが、それも古くなってしまったようだ。 オリジナルにプルリクを投げてる人を見つけたので、 その人のフォークを使う事にした。

再度push。 またエラー

remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Ruby app detected
remote: -----> Compiling Ruby/Rack
remote: -----> Using Ruby version: ruby-2.3.1
remote: -----> Installing dependencies using bundler 1.9.7
remote:        Purging Cache. Changing stack from cedar to cedar-14
remote:        Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment
remote:        Fetching gem metadata from http://rubygems.org/..........
remote:        Fetching version metadata from http://rubygems.org/...
remote:        Fetching dependency metadata from http://rubygems.org/..
remote:        Installing colorator 1.1.0
remote:        Installing daemons 1.2.4
remote:        Installing RedCloth 4.3.2
remote:        Installing forwardable-extended 2.6.0
remote:        Installing sass 3.4.22
remote:        Installing rb-fsevent 0.9.7
remote:        Installing kramdown 1.12.0
remote:        Installing liquid 3.0.6
remote:        Installing mercenary 0.3.6
remote:        Installing rouge 1.11.1
remote:        Installing safe_yaml 1.0.4
remote:        Installing rack 1.6.4
remote:        Installing tilt 2.0.5
remote:        Using bundler 1.9.7
remote:        Installing pathutil 0.14.0
remote:        Installing jekyll-sass-converter 1.4.0
remote:        Installing rack-protection 1.5.3
remote:        Installing sinatra 1.4.7
remote:        Installing ffi 1.9.14
remote:        Installing rb-inotify 0.9.7
remote:        Installing listen 3.0.8
remote:        Installing eventmachine 1.2.0.1
remote:        Installing jekyll-watch 1.5.0
remote:        Installing jekyll 3.2.1
remote:        Installing thin 1.7.0
remote:        Bundle complete! 4 Gemfile dependencies, 25 gems now installed.
remote:        Gems in the groups development and test were not installed.
remote:        Bundled gems are installed into ./vendor/bundle.
remote:        Bundle completed (32.34s)
remote:        Cleaning up the bundler cache.
remote:        Building jekyll site
remote:        Configuration file: /tmp/build_320afce2a916d4af1801bfe0efd03b95/_config.yml
remote:        Source: /tmp/build_320afce2a916d4af1801bfe0efd03b95
remote:        Destination: /tmp/build_320afce2a916d4af1801bfe0efd03b95/_site
remote:        Incremental build: disabled. Enable with --incremental
remote:        Generating...
remote:        jekyll 3.2.1 | Error:  No such file or directory @ utime_internal - /tmp/build_320afce2a916d4af1801bfe0efd03b95/_site/bin/erb
remote:  !
remote:  !     Failed to generate site with jekyll.
remote:  !
remote:  !     Push rejected, failed to compile Ruby app.
remote: 
remote:  !     Push failed
remote: Verifying deploy...
remote: 
remote: !	Push rejected to ikejihome.
remote: 

やれやれ。

検索してみると、同じエラーの人issueが見つかった。 issueの方で古い版のjekyllに戻してる人がいたので、習って、 Gemfileで古い版のjekyllを設定しておいた。

gem 'jekyll', '~> 3.1.6'

やれやれ。