2025-01-08 07:06:50 -05:00
#!/bin/sh
unset BUNDLE_PATH
unset BUNDLE_BIN
set -e
2025-01-09 08:44:16 -05:00
echo " ⚠️ Starting Rails environment: $RAILS_ENV ⚠️ "
2025-01-08 07:06:50 -05:00
# 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
2025-01-09 07:04:22 -05:00
DATABASE_HOST = ${ DATABASE_HOST }
DATABASE_PORT = ${ DATABASE_PORT }
DATABASE_USERNAME = ${ DATABASE_USERNAME }
DATABASE_PASSWORD = ${ DATABASE_PASSWORD }
DATABASE_NAME = ${ DATABASE_NAME }
2025-01-08 07:06:50 -05:00
fi
# Remove pre-existing puma/passenger server.pid
rm -f $APP_PATH /tmp/pids/server.pid
2025-04-24 14:46:38 -04:00
echo " Attempting to create database $DATABASE_NAME if it doesn't exist... "
PGPASSWORD = $DATABASE_PASSWORD createdb -h " $DATABASE_HOST " -p " $DATABASE_PORT " -U " $DATABASE_USERNAME " " $DATABASE_NAME " 2>/dev/null || echo "Note: Database may already exist or couldn't be created now"
2025-01-09 08:44:16 -05:00
# Wait for the database to become available
echo "⏳ Waiting for database to be ready..."
2025-04-24 14:46:38 -04:00
until PGPASSWORD = $DATABASE_PASSWORD psql -h " $DATABASE_HOST " -p " $DATABASE_PORT " -U " $DATABASE_USERNAME " -d " $DATABASE_NAME " -c '\q' 2>/dev/null; do
2025-01-09 08:44:16 -05:00
>& 2 echo "Postgres is unavailable - retrying..."
sleep 2
done
echo "✅ PostgreSQL is ready!"
2025-01-08 07:06:50 -05:00
# Run database migrations
echo "PostgreSQL is ready. Running database migrations..."
bundle exec rails db:migrate
# Run data migrations
echo "Running DATA migrations..."
bundle exec rake data:migrate
2025-01-15 07:08:15 -05:00
# if [ "$RAILS_ENV" != "production" ]; then
2025-01-09 08:44:16 -05:00
echo "Running seeds..."
bundle exec rails db:seed
2025-01-15 07:08:15 -05:00
# fi
2025-01-08 07:06:50 -05:00
# run passed commands
bundle exec ${ @ }