アクトインディ開発者ブログ

子供とお出かけ情報「いこーよ」を運営する、アクトインディ株式会社の開発者ブログです

Paperclip を使っている Rails アプリのテスト高速化

こんにちは、tahara です。

テストでも Paperclip を使っているモデルを FactoryGirl.create(:facility) とかすると、 ImageMagick の convert コマンドなどが走ってしまいます。 これがなかなか重くてテストを遅くしちゃっています。

そこで Paperclip のサムネイル作成をスキップしてテストを高速化してみました。

spec/support/paperclip_stub.rb

module PaperclipStub
  #21966 いこーよ: spec を Paperclip のサムネイル作成処理をスキップすることで高速化する
  def self.included(spec)
    spec.before do
      allow_any_instance_of(Paperclip::Attachment).to receive(:post_process_file).and_return(nil)
      # CMYKテストを飛ばす
      allow(Paperclip).to receive(:run).and_return(nil)
    end
  end
end

各 spec で include します。

describe Facility do
  include PaperclipStub
  ...

これで Summary (4 workers in 507.3806s) > Summary (4 workers in 351.2692s) となり 44.4% の高速化となしました。

(‘∇’)/゚・:【祝】:・゚\(‘∇’)

allow(Paperclip).to receive(:run).and_return(nil) のとこは http://tech.actindi.net/3474323393 のスキップです。