Skip to content

Instantly share code, notes, and snippets.

@RenatoRosaFranco
Created October 14, 2023 15:04
Show Gist options
  • Save RenatoRosaFranco/9baf3ccd4e1659fa4012e4171ff97865 to your computer and use it in GitHub Desktop.
Save RenatoRosaFranco/9baf3ccd4e1659fa4012e4171ff97865 to your computer and use it in GitHub Desktop.
Ruby on Rails seed runner make a proof.
# frozen_string_literal: true
require 'benchmark'
require 'logger'
# Directory path where your seed files are located.
seed_files_directory = File.jsoin(Rails.root, 'db', 'seeds')
# Create a logger for better log management.
logger = Logger.new('seed_runner.log')
# Define a method for running seed files.
def run_seed_file(seed_file, logger)
logger.info("Running seed: #{File.basename(seed_file)}")
begin
realtime = Benchmark.realtime { load seed_file }
logger.info("Seed #{File.basename(seed_file)} finished in #{realtime.round(2)} seconds.")
rescue StandardError => e
logger.error("Error running #{File.basename(seed_file)}: #{e.message}")
end
end
# Find and sort seed files in the directory.
seed_files = Dir[File.join(seed_files_directory, '*.rb')].sort
if seed_files.empty?
logger.warn("No seed files found in #{seed_files_directory}")
else
logger.info('Start runninds seeds...')
seed_files.each { |seed_file| run_seed_file(seed_file) }
logger.info('Finished running seeds.')
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment