Skip to content

Instantly share code, notes, and snippets.

@blocknotes
Created August 11, 2021 16:16
Show Gist options
  • Save blocknotes/ae2601b4efbf1a9b34b9a210aab38c83 to your computer and use it in GitHub Desktop.
Save blocknotes/ae2601b4efbf1a9b34b9a210aab38c83 to your computer and use it in GitHub Desktop.
For development: method to load some records for debugging
# Creates sample methods to fetch single records - it can be useful for debugging, to skip some typing :)
#
# @param mode [Symbol] Load the first|last|random records
# @param models [Array] Models to fetch from
#
# @return [Array] the available sample methods
def load_samples(mode: :first, models: [Model1, Model2, Model3])
puts "> load_samples options => mode: :#{mode} (first|last|random)"
log_level = Rails.logger.level
Rails.logger.level = :warn
results = models.each_with_object({}) do |model, res|
res[model.table_name.singularize] =
case mode
when :first then model.first
when :last then model.last
else model.except(:order).order('RANDOM()').first
end
end
Rails.logger.level = log_level
@samples = OpenStruct.new(results)
results.each_key do |key|
Object.define_method(key) { @samples[key] }
end
@samples.to_h.keys
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment