Files
project-work/worker-toolkit-flaredown/repo/backend/lib/tasks/app.rake

93 lines
2.3 KiB
Ruby

namespace :app do
desc "flaredown | setup application"
task setup: :environment do
setup
end
desc "flaredown | invite beta user to join in"
task invite: :environment do
invite
end
desc "flaredown | delete a user's account"
task delete_account: :environment do
delete_account
end
class OperationAbortedException < StandardError; end
def invite
email = prompt "Please insert email address: "
User.invite!(email: email)
end
def setup
puts "This will create the necessary stuff. You will lose any previous data stored"
# NOTE: asking for confirmation is actually a good idea
# as DBs will be purged but it messes with CI atm
p "Rails env is:"
p Rails.env
ask_to_continue unless Rails.env.test?
build_database
rescue OperationAbortedException
puts "\nQuitting...".red
exit 1
end
def build_database
header "build database"
# Rake::Task["db:mongoid:purge"].invoke
if Rails.env.development?
Rake::Task["db:drop"].invoke
Rake::Task["db:create"].invoke
Rake::Task["db:migrate"].invoke
ActiveRecord::Base.connection.schema_cache.clear!
ActiveRecord::Base.descendants.each(&:reset_column_information)
end
Rake::Task["db:fixtures:load"].invoke
Rake::Task["db:seed"].invoke
rescue ::PG::ObjectInUse => e
puts "\n#{e.message}.".red
end
def header(message)
puts ">>> #{message}".bold.blue
end
def ask_to_continue
answer = prompt("Do you want to continue (yes/no)? ", %w[yes no])
fail OperationAbortedException unless answer.eql?("yes")
end
def prompt(message, choices = nil)
begin
print(message)
input = STDIN.gets
raise OperationAbortedException if input.nil?
answer = input.chomp
p "got answer: #{answer}"
end while choices.present? && !choices.include?(answer)
answer
rescue Interrupt
raise OperationAbortedException
end
def delete_account
puts "DANGER ZONE: This action can't be undone!".yellow
email = prompt "Please insert user's email address: "
user = User.find_by(email: email)
if user.nil?
puts "No user found for the entered email address".red
else
user.destroy!
puts "User account successfully deleted".blue
end
rescue OperationAbortedException
puts "\nQuitting..."
exit 1
end
end