* Dropped all references to Resque * Moved all jobs under app/workers since that's the Sidekiq convention * Renamed Jobs module to Worker to match new location * Adapted all jobs to Sidekiq * Replaced all enqueue calls with perform_async * Dropped Resque hacks from specs and features, replaced with sidekig/testing in RSpec and sidekig/testing/inline in Cucumber * Updated scripts to start a Sidekiq server * Inline Sidekiq sinatra app * Let Sidekiq create the actual Redis instance * Workaround already initialized constant warnings in service models * Resolved ToDo in one job definition by creating proper exception clases for some errors in receiving posts * Added sidekiq section to configuration to make it completly configurable to the user * Add Sidekiq middleware for clean backtraces * Delay HttpMulti retry to give offline pods a chance to come back up * Do not retry on GUID already taken and alike errors * Be graceful about deleted posts in GatherOEmbedData
111 lines
3 KiB
Bash
Executable file
111 lines
3 KiB
Bash
Executable file
#!/bin/sh
|
|
# Copyright (c) 2010-2011, Diaspora Inc. This file is
|
|
# licensed under the Affero General Public License version 3 or later. See
|
|
# the COPYRIGHT file.
|
|
|
|
# ensure right directory
|
|
realpath=$( ruby -e "puts File.expand_path(\"$0\")")
|
|
cd $(dirname $realpath)/..
|
|
|
|
#Warn if legacy config exists
|
|
if [ -e 'config/script_server.yml' ]; then
|
|
echo "WARNING: config/script_server.yml was merged into config/diaspora.yml. Please read the changelog!" >&2
|
|
fi
|
|
|
|
# Check if database.yml exists
|
|
if [ ! -e 'config/database.yml' ]; then
|
|
echo 'FATAL: config/database.yml is missing! Copy over config/database.yml.example to config/database.yml and edit it properly!' >&2
|
|
exit 68
|
|
fi
|
|
|
|
# Check if diaspora.yml exists
|
|
if [ ! -e 'config/diaspora.yml' ]; then
|
|
echo 'FATAL: config/diaspora.yml is missing! Copy over config/diaspora.yml.example to config/diaspora.yml and edit it properly!' >&2
|
|
exit 70
|
|
fi
|
|
|
|
|
|
# Setup environment
|
|
if [ -z "$RAILS_ENV" ]; then
|
|
RAILS_ENV=$(bundle exec ruby ./script/get_config.rb server.rails_environment)
|
|
export RAILS_ENV
|
|
fi
|
|
|
|
os=`uname -s`
|
|
eval $(bundle exec ruby ./script/get_config.rb \
|
|
port=server.port \
|
|
db=server.database \
|
|
single_process_mode=environment.single_process_mode?
|
|
embed_sidekiq_worker=server.embed_sidekiq_worker
|
|
)
|
|
|
|
if [ -z "$DB" ]; then
|
|
DB=$db
|
|
export DB
|
|
fi
|
|
|
|
args="$@"
|
|
prev_arg=''
|
|
for arg in $( echo $args | awk '{ for (i = 1; i <= NF; i++) print $i}')
|
|
do
|
|
[ "$prev_arg" = '-p' ] && port="$arg"
|
|
prev_arg="$arg"
|
|
done
|
|
|
|
# Check if already running/port blocked
|
|
chk_service()
|
|
{
|
|
port=${1:?Missing port}
|
|
case $os in
|
|
*[Bb][Ss][Dd]*|Darwin)
|
|
## checks ipv[46]
|
|
netstat -anL | awk '{print $2}' | grep "\.$1$"
|
|
;;
|
|
*)
|
|
# Is someone listening on the ports already? (ipv4 only test ?)
|
|
netstat -nl | grep '[^:]:'$port'[ \t]'
|
|
;;
|
|
esac
|
|
}
|
|
|
|
|
|
services=$( chk_service $port )
|
|
if [ -n "$services" ]; then
|
|
echo "FATAL: Error: port $port is already in use. Exiting" >&2
|
|
echo " $services"
|
|
exit 64
|
|
fi
|
|
|
|
|
|
# Force AGPL
|
|
if [ -w public -a ! -e public/source.tar.gz ]; then
|
|
branch=$( git branch | awk '/^[*]/ {print $2}')
|
|
tar czf public/source.tar.gz `git ls-tree -r $branch | awk '{print $4}'`
|
|
fi
|
|
|
|
if [ ! -e public/source.tar.gz ]; then
|
|
echo "FATAL: Error: Can't find, or even create, public/source.tar.gz. Exiting" >&2
|
|
exit 65
|
|
fi
|
|
|
|
# Check if assets are precompiled
|
|
if [ "$RAILS_ENV" = 'production' ]; then
|
|
if [ ! -e 'public/assets/default.css' ]; then
|
|
echo "FATAL: You're running in production mode without having assets precompiled." >&2
|
|
echo "Now and after each update before you restart the application, run:" >&2
|
|
echo "bundle exec rake assets:precompile" >&2
|
|
exit 71
|
|
fi
|
|
fi
|
|
|
|
|
|
# Start Diaspora
|
|
echo -n "Starting Diaspora in $RAILS_ENV mode on port $port "
|
|
if [ "$embed_sidekiq_worker" = "true" ]; then
|
|
echo "with a sidekiq worker embeded into unicorn."
|
|
elif [ "$single_process_mode" = "true" ]; then
|
|
echo "with job processing inside the request cycle."
|
|
fi
|
|
echo ""
|
|
|
|
exec bundle exec foreman start -m "web=1,sidekiq=1" -p $port
|