Help us understand the problem. What is going on with this article?

【Rails】capybara-webkitが導入できなくててこずった話

はじめに

タイトルのとおりcapybara-webkitが導入できなくててこずったので同じような境遇の方のためにメモとして残しておきます。

ここで書く手順は僕がうまくいかなかった道のりを書いているので、適切な手順でないことはご承知おきください。

ちなみにmacOSはCatalina バージョン10.15.5です。
(mojaveだとまた少し手順が違うらしい)

経緯

Capybara使って統合テストするぞ

JavaScriptが絡む処理をテストするにはcapybara-webkitを使う必要があるらしい

gem追加してbundle installしたらエラー出た\(^o^)/

どんなエラー?

ターミナルで次のように出ました。(一部なのでホントはもっと長いです)
Command 'qmake ' not available
qmakeなにそれ美味しいの?

調べてみるとqtなるものをインストールする必要があるらしい

qt導入

qtはHomebrewを使ってインストールできるらしいことがわかり試してみる

ターミナル
$ brew install qt

無事インストールされたので再びbundle installしてみる。

またもや同じエラー\(^o^)/

調べてみるとqt@5.5のバージョン指定が必要らしいです。

ちなみに僕はここでbrew link --force qtというコマンドを入力して何らかの何かが起こり、bundle installしたときに別のエラーが表示されるようになってしまいました。
一部だけ抜き取ると、Project ERROR: No QtWebKit installation found. QtWebKit is no longer included with Qt 5.6, so you may need to install it separately.というエラーです。

qt5.5導入

ターミナル
$ brew install qt@5.5

これでいけると思ったらエラーが…
Error: No available formula with the name "qt@5.5"

どうやらbrewではqt@5.5が削除されているため直接インストールすることはできないらしい。
brewのリポジトリのqt@5.5が削除される直前のコミットから無理やり引っ張ってくる必要があるとのことでした。(この記事を参考にしました)

ターミナル
$ brew update
$ cd $( brew --prefix )/Homebrew/Library/Taps/homebrew/homebrew-core
$ git checkout 9ba3d6ef8891e5c15dbdc9333f857b13711d4e97 Formula/qt@5.5.rb

これでUpdated 1 path from 741af0285fと出てくれば次のステップです。

僕はこれをやる前にxcodeのインストールが必要みたいな記事を見かけてxcodeをインストールしたのですが、やらなくても大丈夫っぽいです。

次こそ大丈夫だと思ってqt@5.5をインストールしてみます。

ターミナル
$ brew install qt@5.5

しかしまたしてもエラー
Error: unknown or unsupported macOS version: :mountain_lionと出てきます。

この場合Formula/qt@5.5.rbの記述を変更する必要があるみたいです。
(このことに気付かず右往左往してしまいました)

ターミナル
$ vi Formula/qt@5.5.rb

これでターミナルから直接テキスト編集します。
iで入力モードにし、depends_on :macos => :mountain_lionをコメントアウトします。

ターミナル
 # 変更前
 # OS X 10.7 Lion is still supported in Qt 5.5, but is no longer a reference
  # configuration and thus untested in practice. Builds on OS X 10.7 have been
  # reported to fail: <https://github.com/Homebrew/homebrew/issues/45284>.
  depends_on :macos => :mountain_lion
 
  # 変更後
  # OS X 10.7 Lion is still supported in Qt 5.5, but is no longer a reference
  # configuration and thus untested in practice. Builds on OS X 10.7 have been
  # reported to fail: <https://github.com/Homebrew/homebrew/issues/45284>.
  # depends_on :macos => :mountain_lion  # この行をコメントアウト

コメントアウトしたらescキーを押してから:wqで保存します。

これでqt@5.5をインストールできるはずです。

ターミナル
$ brew install qt@5.5

/usr/local/Cellar/qt@5.5/5.5.1_1: 7,330 files, 329.7MBこんな感じで表示されればOKです。

これでやっとcapybara-webkitをインストールできると思いました。
しかしまたエラーが返ってきます。トホホ…

qmakeを強制的にリンク

なにやらqmakeを強制的にリンクさせる必要があるとのこと。このへんの仕組みはさっぱりわかりません。
とりあえず記事に書いてあるとおり試してみます。

ターミナル
$ brew link --force qt@5.5

すると
Error: Could not symlink bin/lconvert
ガーン…なんでやねん

いろいろ試したところ次のようにしたらうまくいきました。
(もともと違うものにリンクされていたものを一旦解除しなきゃない的なこと?)

ターミナル
$ brew unlink qt

これのあとでもう一度先ほどのコマンドを実行します。

ターミナル
$ brew link --force qt@5.5

エラーも出ずうまく行ったようです。
以下のコマンドでバーションを確認してみます。

ターミナル
$ /usr/local/opt/qt@5.5/bin/qmake --version

これを実行して
Using Qt version 5.5.1 in /usr/local/Cellar/qt@5.5/5.5.1_1/libとなってればもう大丈夫です。ここにqt@5.5がいる必要があったということだと思います。

この後問題なくbundle installでcapybara-webkitを導入できました( ^ω^ )

参考記事

https://monmon.hatenablog.com/entry/2019/12/24/capybara-webkit-on-macos
https://obel.hatenablog.jp/entry/20200420/1587324600?utm_source=feed
https://qiita.com/306_san/items/3a09a5c5eed17065ce12

koki_73
レアなつよつよエンジニアを目指しています。 エンジニア集団の中で一意性制約に引っかからないように日々精進
https://koki-73.github.io/my-portfolio/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした