それでもFactoryGirl+RSpecが遅いと感じたら
Railsのrspecが遅いので対応した結果wwwwwwwwwwwwwwからしばらくして、やっぱり全体的にテストが遅い・・・!と再認識し、コードを書くのにストレスを感じてきたから本腰入れて調べてみることにした。
で、結果がしょぼかったから経緯は省いて結論からいうと、fixture_file_uploadのせいだった。
このアプリではpaperclipを使っていて、models/user.rbにavatarを持っていた。
has_attached_file :avatar, :styles => {:original => "300x300#", :thumb => "50x50#", :icon => "32x32#"},
このため、spec/factories/user.rbも以下のようになっていた。
FactoryGirl.define do factory :user do name "ria10" sequence(:email) { |n| "ria10-#{n}@example.com" } password "foobar" locale "ja" avatar { fixture_file_upload("#{::Rails.root}/spec/fixtures/images/cat.jpg", 'image/jpg', true) } status UserStatus::ACTIVE end end
これが重くなる原因だった。そりゃ毎度ファイルアクセスが発生すれば・・・と結果がでればわかるけど完全に想定外だった。
特にuserモデルは他のモデルの前提条件的なモデルだったので影響がでかく、モデル全体のテストで5倍以上の差がでた。。
before
[ria10@ria10-mba ria10-web (bugfix)]$ bundle exec rspec spec/models/
................................................................................................................................................Finished in 1 minute 11.6 seconds
144 examples, 0 failures
after
[ria10@ria10-mba ria10-web (bugfix)]$ bundle exec rspec spec/models/
................................................................................................................................................Finished in 12.41 seconds
144 examples, 0 failures
ファイルは必要なときだけアクセスしようず
- 作者: 黒田努,佐藤和人
- 出版社/メーカー: インプレス
- 発売日: 2013/03/14
- メディア: Kindle版
- この商品を含むブログ (1件) を見る