#!/bin/sh unset BUNDLE_PATH unset BUNDLE_BIN set -e echo "⚠️ Starting Sidekiq in $RAILS_ENV environment ⚠️" # Parse DATABASE_URL if present, otherwise use individual variables if [ -n "$DATABASE_URL" ]; then # Extract components from DATABASE_URL DATABASE_HOST="$(echo "$DATABASE_URL" | awk -F[@/] '{print $4}')" DATABASE_PORT="$(echo "$DATABASE_URL" | awk -F[@/:] '{print $5}')" DATABASE_USERNAME="$(echo "$DATABASE_URL" | awk -F[:/@] '{print $4}')" DATABASE_PASSWORD="$(echo "$DATABASE_URL" | awk -F[:/@] '{print $5}')" DATABASE_NAME="$(echo "$DATABASE_URL" | awk -F[@/] '{print $5}')" else # Use existing environment variables DATABASE_HOST="${DATABASE_HOST}" DATABASE_PORT="${DATABASE_PORT}" DATABASE_USERNAME="${DATABASE_USERNAME}" DATABASE_PASSWORD="${DATABASE_PASSWORD}" DATABASE_NAME="${DATABASE_NAME}" fi # Wait for the database to become available echo "⏳ Waiting for database to be ready..." until PGPASSWORD=$DATABASE_PASSWORD psql -h "$DATABASE_HOST" -p "$DATABASE_PORT" -U "$DATABASE_USERNAME" -d "$DATABASE_NAME" -c '\q'; do >&2 echo "Postgres is unavailable - retrying..." sleep 2 done echo "✅ PostgreSQL is ready!" # run sidekiq exec bundle exec sidekiq