wmaciejak/rails_rom_graphql_clean_architecture_boilerplate

View on GitHub
lib/tasks/database.rake

Summary

Maintainability
Test Coverage
# frozen_string_literal: true

DB = Sequel.connect(ENVied.DATABASE_URL)

def create_db(name)
  DB.run "CREATE DATABASE #{name}"
  $stdout.puts "#{name} created"
rescue Sequel::DatabaseError
  $stdout.puts "WARN: #{name} already exists. Skipping..."
end

def drop_db(name)
  DB.run "DROP DATABASE #{name}"
  $stdout.puts "#{name} dropped"
rescue Sequel::DatabaseError
  $stdout.puts "WARN: #{name} doesn't exist. Skipping..."
end

namespace :db do
  namespace :seed do
    load(File.join(Rails.root, 'db', 'seeds.rb'))
    task development: :environment do
      Seeds::Runner.start!('development')
    end
  end

  task :create do
    uri = URI.parse(ENVied.DATABASE_URL)
    database_name = uri.path[1..-1]
    create_db(database_name)
  end

  task :drop do
    uri = URI.parse(ENVied.DATABASE_URL)
    database_name = uri.path[1..-1]
    drop_db(database_name)
  end

  namespace :test do
    task :prepare do
      abort('Production environment. Aborting...') if Rails.env.production?
      system 'RACK_ENV=test bundle exec rake db:drop db:create db:migrate'
    end
  end
end