module EvilSystems::PrecompileAssets

Public Class Methods

initial_setup(task: "assets:precompile", silent: true) click to toggle source

Precompile assets before running tests to avoid timeouts. Do not precompile if webpack-dev-server is running (NOTE: MUST be launched with RAILS_ENV=test) @param task [String, nil] (“assets:precompile”) - the precompile task to run @param silent [Boolean] (true) - silence build output and only show asset compilation and time spent compiling.

# File lib/evil_systems/precompile_assets.rb, line 9
def self.initial_setup(task: "assets:precompile", silent: true)
  $stdout.puts "\n🐢  Precompiling assets.\n"
  original_stdout = $stdout.clone
  start = Time.current
  begin
    # Silence output
    $stdout.reopen(File.new("/dev/null", "w")) if silent == true
    # next 3 lines to compile assets before running our test suite
    require "rake"
    Rails.application.load_tasks
    Rake::Task[task].invoke if task
  ensure
    $stdout.reopen(original_stdout) if silent == true
    $stdout.puts "Finished in #{(Time.current - start).round(2)} seconds"
  end
end