wait_for_init.rake 567 B

123456789101112131415161718192021222324
  1. # frozen_string_literal: true
  2. require 'English'
  3. namespace :db do
  4. desc 'Waits for database to be available'
  5. task :wait_for_init do
  6. require 'socket'
  7. 20.times do
  8. # postgres://postgres:postgres@db:5432/postgres
  9. # we want: ^^ ^^^^
  10. db_host = ENV['DATABASE_URL'].split(/:|@/)[3]
  11. db_port = ENV['DATABASE_URL'].split(/:|@/)[4].to_i
  12. sock = TCPSocket.new db_host, db_port
  13. sock.close
  14. break
  15. rescue StandardError
  16. $stderr.puts "db:wait_for_init: #{$ERROR_INFO}"
  17. sleep 6
  18. end
  19. end
  20. end