皆さん、font-awesome は使っていますか?font-awesomeは、twitter bootstrap が提供しているアイコンを、フォントとして使えるようにしてくれるライブラリです。フォントなので、拡大しても画質が荒くならないですし、色を変えることも簡単にできます。べんり!
ただ、一つだけ難点があります。font-awesome を使っていると capybara-webkit でのテストがこけるのです。理由は、capybara-webkit(というかcapybara-webkitが依存しているqt) が font-awesome などの外部フォントに対応していないためです。というわけで下記のようにして対処しました。
前提
gem 'font-awesome-sass-rails'
を使っています。素の font-awesome を使っている人は別のやり方でないとダメだと思います。
対処法
config/initializers/capybara-webkit.rb を作って下記のように書きました。
if Rails.env.test?
Rails.application.config.assets.paths.reject! { |path| path.to_s =~ /font-awesome/ }
end
これで、テスト時限定で asset-pipeline のパスから font-awesome 関連のものが削除されました。大抵のひとはこれだけでも大丈夫かもしれません。
ただ、僕の場合は下記のような font-awesome のフォントのみのボタンを使っており、font-awesome がないとボタンを押せずにテストがこけてしまいました。
これを解決するために、ダミーの font-awesome を作ります。
spec/support/assets/stylesheets/font-awesome.css.sass を作り、下記のように書きます。
i:before
content: "i"
また、config/environments/test.rb に下記の設定を追加します。
config.assets.paths << Rails.root.join('spec', 'support', 'assets', 'stylesheets').to_s
これで、テスト環境の時だけ font-awesome のアイコンが “i” と表示されるようになりました。テストもちゃんと通ります。やったね!