class Object

Public Instance Methods

drop(env_name) click to toggle source
# File lib/tasks/rake_multi_db.rb, line 68
def drop(env_name)
  puts "Dropping #{env_name.capitalize} Database"

  execute_command("rake db:drop RAILS_ENV=#{env_name}")
end
execute_command(command) click to toggle source
# File lib/tasks/rake_multi_db.rb, line 92
def execute_command(command)
  Open3::popen3(command) do |stdin, stdout, stderr|
    out_text = stdout.gets
    error_text = stderr.gets

    unless error_text.nil?
      puts "Error: #{error_text}"

      prompt_user 'An error occurred. Would you like to continue?'
    end

    unless out_text.nil?
      puts out_text
    end
  end
end
migrate(env_name) click to toggle source
# File lib/tasks/rake_multi_db.rb, line 74
def migrate(env_name)
  puts "Migrating #{env_name.capitalize} Database"

  execute_command("rake db:migrate RAILS_ENV=#{env_name}")
end
prompt_user(message) click to toggle source

Helper methods #

# File lib/tasks/rake_multi_db.rb, line 45
def prompt_user(message)
 # Don't show a message, if the force param was passed
 force = ENV['force'].nil? ? false : ENV['force']

 return true if force

 puts "#{message} (y|n|yes|no)"

 # parse the response
 resp = STDIN.gets.strip

 case resp.downcase
  when 'yes', 'y'
   return true
  when 'no', 'n'
   puts 'Aborting...'
   exit 0
  else
   # Re-prompt the user
   return prompt_user message
 end
end
reset(env_name) click to toggle source
# File lib/tasks/rake_multi_db.rb, line 80
def reset(env_name)
  puts "Resetting #{env_name.capitalize} Database"

  execute_command("rake db:reset RAILS_ENV=#{env_name}")
end
seed(env_name) click to toggle source
# File lib/tasks/rake_multi_db.rb, line 86
def seed(env_name)
  puts "Seeding #{env_name.capitalize} Database"

  execute_command("rake db:seed RAILS_ENV=#{env_name}")
end