[Ruby] Capybaraでphantomjs関連のエラーに対応する

あるサーバーで動いているRubyスクリプトを別サーバーに移行させたら、Capybara関連でハマったので、メモとして残します。

現象

Capybaraを実行するRubyスクリプトを実行したら、下記のエラーが出ました。

failed to detect theversion of the executable at '/usr/bin/phantomjs'

phantomjsのバージョンが見つからないというエラーですが、色々調べてみてると、phantomjsがそもそも入ってない場合も同じエラーが出るようで。

よーく考えてみたら、phantomjsをインストールしてなかった。。。そのエラーですね。

対応方法

ここからが若干ハマりポイントです。(この前も若干ハマったんですけど。。。)

phantomjsをインストール(apt installじゃダメだよ)

Ubuntuだったらaptでインストール!ということで、

sudo apt install phantomjs

としたいところですが、apt installで入れるとphantomjsのバージョンが古いらしく、エラーになります。

ということで、ここを参考にphantomjsをインストールします。

$ sudo apt-get update

$ sudo apt-get install build-essential chrpath libssl-dev libxft-dev -y
$ sudo apt-get install libfreetype6 libfreetype6-dev -y
$ sudo apt-get install libfontconfig1 libfontconfig1-dev -y

$ export PHANTOM_JS="phantomjs-2.1.1-linux-x86_64"

$ wget https://github.com/Medium/phantomjs/releases/download/v2.1.1/$PHANTOM_JS.tar.bz2

$ sudo tar xvjf $PHANTOM_JS.tar.bz2

筆者の環境では、phantomjsは/usr/bin/の中にいて欲しかったので、最後のシンボリックリンクのコマンドは、

sudo ln -sf /usr/local/share/$PHANTOM_JS/bin/phantomjs /usr/bin

としました。

インストールできているか確認

phantomjs --version

でバージョンが出てくればOKです。

これで、CapybaraがRubyから実行できるようになります。