LoginSignup
1
1

More than 5 years have passed since last update.

テストの自動ツール導入時にcapybara-webkitでエラーが起きたのでその対処

Posted at

はじめに

テストの自動化する際にGemfileを変更して、bundle updateした時、capybara-webkitでエラーになり、つまったのでメモします。
※やりながら書いたので全然まとまってません。

qmakeコマンドがない

出たエラーは?

もともとcapybara自体は入っていたので、bundle update
そしたら、

gem install capybara-webkit -v '1.11.1'

をインストールする時にqmakeってコマンドがなくてエラーに。。。

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
...
...
Command 'qmake ' not available

extconf failed, exit code 1

Gem files will remain installed in /Users/...gems/capybara-webkit-1.11.1 for inspection.
Results logged to /Users/.../capybara-webkit-1.11.1/gem_make.out
An error occurred while installing capybara-webkit (1.11.1), and Bundler cannot continue.
Make sure that `gem install capybara-webkit -v '1.11.1'` succeeds before bundling.

qmakeをインストールする

調べてみると、この記事で以下のようなコマンドをしたらできるとの事。

brew update
brew install qt55

※私はElCapitanを使っているので、このページを参考qt55というバージョンをインストールすることにした。

brew updateができない!!

brew updateするとこんなエラーが・・・
brew doctorをやっても同じエラーなので、homebrewが使えなくなってる。。。

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- mach (LoadError)
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/Library/Homebrew/extend/pathname.rb:2:in `<top (required)>'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/Library/Homebrew/global.rb:3:in `<top (required)>'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/Library/brew.rb:15:in `<main>'

homebrewを復活させる

原因はここに書かれていますが、ElCapitanにアップデートしたことで、セキュリティー周りの設定が変わり、/usr/localの下がうまく動作しなかったようです。

なので、書かれている通りのコマンドを実行してみます。

cd $(brew --prefix) 
git fetch 
git reset --hard origin/master

brew update

でも、まだ怒られる・・・
調べてみるとrootユーザ担ってしまっているのがいけないようです。
以下のコマンドで、adminユーザに変更。
こっちの記事をみるとちゃんと書いてありますね。

sudo chown -R $(whoami):admin /usr/local

以下のコマンドでadminユーザになっている事を確認する。

ls -ld /usr/local

再度、qmakeをインストールするぞ!!

brew tap homebrew/versions
brew install qt55

すると・・・

==> Installing qt55 from homebrew/versions
==> Downloading https://homebrew.bintray.com/bottles-versions/qt55-5.5.1.el_capitan.bottle.tar.gz
######################################################################## 100.0%
==> Pouring qt55-5.5.1.el_capitan.bottle.tar.gz
==> Caveats
...
==> Summary
🍺  /usr/local/Cellar/qt55/5.5.1: 7,246 files, 329.6M

インストールできましたね。

でもこのままだと使えないらしく、以下を実行しておきます。
これをすることによって、qmakeってコマンドを実行すると、インストールしたqt55のプログラムを実行してくれるようになるんだと思っている。。(ちゃんと調べてないからあってないかも)

brew link --force qt55

capybara-webkitを再度インストール

実行したいGemfileがあるディレクトリに戻ってから、以下を実行。

gem install capybara-webkit -v '1.11.1'

無事できました〜!

Building native extensions.  This could take a while...
Successfully installed capybara-webkit-1.11.1
1 gem installed

まとめ

OSのアップデートが原因だとはおもわず、時間がかかりましたが、開発環境そろえる知識が少ないため、すごいペン今日になりました。
ちなみに、qmakeとはクロスプラットフォーム向けのフレームワークの1つ。
クロスプラットフォームというのは、仕様が違う機械やOS上で、同じ仕様のものを動かせるプログラムのことをいうそうです(Wikipediaより)。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1