Skip to content

Instantly share code, notes, and snippets.

@jklimke
Created July 17, 2020 13:12
Show Gist options
  • Save jklimke/3fea1e5e7dd7cd8003de7500508364df to your computer and use it in GitHub Desktop.
Save jklimke/3fea1e5e7dd7cd8003de7500508364df to your computer and use it in GitHub Desktop.
script for executing rails delayed jobs in a blocking manner, e.g., for running in an docker container
#!/bin/bash
# Variable DELAYED_JOB_ARGS contains the arguments for delayed jobs for, e.g. defining queues and worker pools.
# function that is called when the docker container should stop. It stops the delayed job processes
_term() {
echo "Caught SIGTERM signal! Stopping delayed jobs !"
# unbind traps
trap - SIGTERM
trap - TERM
trap - SIGINT
trap - INT
# end delayed jobs
bundle exec "./bin/delayed_job ${DELAYED_JOB_ARGS} stop"
exit
}
# register handler for selected signals
trap _term SIGTERM
trap _term TERM
trap _term INT
trap _term SIGINT
echo "Starting delayed jobs ... with ARGs \"${DELAYED_JOB_ARGS}\""
# restart delayed jobs on script execution
bundle exec "./bin/delayed_job ${DELAYED_JOB_ARGS} restart"
echo "Finished starting delayed jobs... Waiting for SIGTERM / CTRL C"
# sleep forever until exit
while true; do sleep 86400; done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment