Skip to content

Commit 5cc8af7

Browse files
committed
Precompile shipit assets before benchmark iterations
The shipit-engine ships CoffeeScript assets that require a Node.js runtime to compile via Sprockets. Without precompilation, Sprockets shells out to Node.js on the first request during warmup/benchmark iterations, adding noise to timing measurements. Run assets:precompile once before any iterations, and skip it on subsequent runs by checking for the Sprockets manifest file. Fixes #493
1 parent dd12edb commit 5cc8af7

1 file changed

Lines changed: 9 additions & 0 deletions

File tree

benchmarks/shipit/benchmark.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,15 @@
1414
require_relative 'config/environment'
1515
require_relative "route_generator"
1616

17+
# Precompile assets once so that Sprockets never shells out to Node.js during
18+
# warmup/benchmark iterations (shipit-engine ships CoffeeScript assets).
19+
unless Dir.glob(File.join(__dir__, 'public/assets/.sprockets-manifest*.json')).any?
20+
puts "Precompiling assets..."
21+
Rails.application.load_tasks
22+
Rake::Task['assets:precompile'].invoke
23+
puts "Assets precompiled."
24+
end
25+
1726
# For an in-mem DB, we need to load all data on every boot
1827
mem_db = ActiveRecord::Base.connection.raw_connection
1928
file_db = SQLite3::Database.new('db/production.committed.sqlite3')

0 commit comments

Comments
 (0)