36 lines
1.3 KiB
Ruby
36 lines
1.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
namespace :db do
|
|
desc 'Bootstrap the database for the current RAILS_ENV (create, setup & seed if the database does not exist)'
|
|
task bootstrap: :environment do
|
|
Rake::Task['db:create'].invoke
|
|
if ActiveRecord::Base.connection.tables.empty?
|
|
puts 'Bootstrapping the database...'
|
|
Rake::Task['db:setup'].invoke
|
|
Rake::Task['db:seed'].invoke
|
|
else
|
|
puts 'Database exists, skipping bootstrap...'
|
|
end
|
|
end
|
|
|
|
desc 'Import a given file into the database'
|
|
task :import, [:path] => :environment do |_t, args|
|
|
dump_path = args.path
|
|
connection_config = ActiveRecord::Base.connection_config
|
|
|
|
case connection_config[:adapter]
|
|
when 'postgresql'
|
|
system("PGPASSWORD=#{connection_config[:password]} pg_restore " \
|
|
'--verbose --clean --no-acl --no-owner ' \
|
|
"--username=#{connection_config[:username]} " \
|
|
"-d #{connection_config[:database]} #{dump_path}")
|
|
when 'mysql', 'mysql2'
|
|
system("mysql -u #{connection_config[:username]} " \
|
|
"-p#{connection_config[:password]} " \
|
|
"#{connection_config[:database]} < #{dump_path}")
|
|
else
|
|
raise NotImplementedError.new("An importer hasn't been implemented for: " \
|
|
"#{connection_config[:adapter]}")
|
|
end
|
|
end
|
|
end
|