- エンジニアリングマネージャー
- フロントエンドエンジニア
- Customer Support
- Other occupations (59)
- Development
-
Business
- エンジニアリングマネージャー
- Product Manager
- プロダクトマネージャー
- スクラムマスター
- サステナビリティ
- 広報
- カルチャー推進・浸透
- 知財戦略立案・推進・発明発掘
- リスクマネジメント統括本部
- AML/CFTコンプライアンス
- AML・金融犯罪対策Ops
- 金融コンプライアンス
- ビジネス採用担当
- 経営企画(予実・IR)
- HRBP
- Legal
- 債権管理/MFK
- 電話によるアポイント獲得
- ToB Sales
- インサイドセールス
- フィールドセールス
- インサイドセールス SDR
- インサイドセールス企画
- オンラインセールス
- SaaS営業、MFBC
- インサイドセールス MFBC
- セールス MFBC
- マーケティングリサーチャー
- マーケター
- データマーケター
- BtoBマーケティングリーダー
- イベントマーケター
- Other
Railsエンジニアの越川です。
よく、テストでRails.cacheを使ったテストをしたいけれども、テストの度に念のため消しておきたいという事情でspec/rails_helper.rbに
config.before(:each) do
Rails.cache.clear
end
このように書いていたりします。
このRails.cache.clearですが、cacheをdefaultのFileStoreにしていると、tmp/cacheの中身を消すようです。
この時、sassなどを使っているプロジェクトの場合、tmp/cache/assets/配下も一緒に消されてしまいます。これに気づかないとfeature specを実行するたびにsassのコンパイルが走ってしまい何故かfeature specがべらぼうに遅い!という自体が起きてしまいます。本格的にsassを使っているほど顕著です。
実際、poltergeistをDriverに設定したfeature specが極端に遅いケースが有り、試しにレイアウトファイルからstylesheet_link_tagを消してみたところ、高速に実行できるようになったことから、cssのレンダリング、もしくはsassのコンパイルに時間がかかることを突き止めました。
簡単な解決策は、test時のcacheをmemoryに変えることです。config/environments/test.rbを修正しましょう。
Rails.application.configure do
config.cache_store = :memory_store
end
こうすることで、Rails.cache.clearの対象がtmp/cacheではなくなるので、tmp/cache/assets/が消えなくなります。
マネーフォワードでは日々テストを改善していきたいエンジニアを募集しています。
みなさまのご応募お待ちしております!