require 'ffaker' require 'sample_counters' require 'benchmark'
namespace :db do
desc 'Loads sample data' task :sample do say "Simple mode: #{@simple_sample_counts.to_json}".yellow say "Normal mode: #{@normal_sample_counts.to_json}".yellow say "Full mode: #{@full_sample_counts.to_json}".yellow say "------------------------------------------------------------------------------------------------".green mode = ENV['mode'] if mode.nil? choose do |menu| menu.prompt = "Please choose a mode ".yellow menu.choice(:simple) { simple_mode } menu.choice(:normal) { normal_mode } menu.choice(:full) { full_mode } end else resolve_mode(mode) end time = Benchmark.realtime do say "Resetting database ..." Rake::Task["db:reset"].invoke sample_path = File.join(File.dirname(__FILE__), '..', '..', 'db', 'sample') Rake::Task['db:load_dir'].reenable Rake::Task['db:load_dir'].invoke(sample_path) end say "Time elapsed #{human_time(time)}" end
end
private
def human_time(time)
mm, ss = time.divmod(60) say("%d minutes and %d seconds".green % [mm, ss])
end
def simple_mode
say "Running in simple mode ...".yellow @count = @simple_sample_counts
end
def normal_mode
say "Running in normal mode ...".yellow @count = @normal_sample_counts
end
def full_mode
say "Running in full mode ...".yellow @count = @full_sample_counts
end
def resolve_mode(mode)
if mode == 'full' full_mode elsif mode == 'normal' normal_mode elsif mode == 'simple' simple_mode else normal_mode end
end