Ruby
rubygems
capybara-webkit

capybara-webkitの導入指南書(macOS版)

弊社のプロダクトでcapybara-webkit導入してるのですが、
今導入すると躓いているポイントが深いので、
メモしておこうと思います。

https://qiita.com/labocho/items/e12bafbcf7f31ccfb76c
で書かれていますが、Mojaveでqt@5.5が導入できないことが問題で、
この後homebrewから取り除かれ、すべてのmacOSで導入できなくなりました。

何が起きたか

  • capybara-webkitにはqt@5.5に依存
  • qt@5.5はbrewで入れることができた
    • しかしMojaveでqt@5.5が導入できないのでbrewから取り除かれる
  • すべてのmacOSでbrewで導入できずcapybara-webkitがインストールできない

今回はこんな状況でもbrewからqtを入れるようにします

事前準備

Xcodeをインストール

capybara-webkitをインストールする際、アプリのXcodeが必要になります。
Xcode10でもいいのでインストールします。
https://developer.apple.com/jp/xcode/
↑DLはここから
DLしてきたXcodeは/Applications/においてください。

xcodebuildコマンドが通るかチェック

/usr/bin/xcodebuild
Project ERROR: Xcode not set up properly. You may need to confirm the license agreement by running /usr/bin/xcodebuild.
/usr/bin/xcodebuild
xcode-select: error: tool ‘xcodebuild’ requires Xcode, but active developer directory ‘/Library/Developer/CommandLineTools’ is a command line tools instance

↑正常な場合でもエラーが出ます。ややこしいですが上と同じエラー文が出ていたら問題があります。
(下のエラーの場合はXcodeが/Applications/に配置されているか確認してください)
上のエラーが出ているなら以下のコマンドを実行します。

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

(参考:https://qiita.com/Pegasus204/items/1ac470114669d3c4471c)
これでcapybara-webkitインストールできる準備が整いました。

brewからqt@5.5を導入する

https://github.com/thoughtbot/capybara-webkit/wiki/Installing-Qt-and-compiling-capybara-webkit#macos-high-sierra-1013-macos-sierra-1012-el-capitan-1011-and-yosemite-1010
こういうときは公式ドキュメントをまず読みましょう。

公式ドキュメントがbrewの削除に更新されていますが
現時点(2018/10/10)ではこれだけでは動かないので
以下のコマンドを実行してください

brew update
cd $( brew --prefix )/Homebrew/Library/Taps/homebrew/homebrew-core
git -C "$(brew --repo homebrew/core)" fetch --unshallow
git checkout 9ba3d6ef8891e5c15dbdc9333f857b13711d4e97 Formula/qt@5.5.rb

これで導入できる準備ができました。

(詳しい理由が知りたい人向け)
新規でbrewを入れた場合
膨大な過去のコミットをとりいれずに
最新の数件のコミットだけをとりこんでいます。
現時点でqt削除は380コミット前なので過去のコミットをすべて取得できるように
コマンドを追加してあります。

HighSierra(10.13以下)の方

brew install qt@5.5

Mojaveの方

brew install qt@5.5 --force-bottle

これでqt@5.5が導入できました。
あとはbundleなりgemなりでcapybara-webkitを導入してください!