diff options
Diffstat (limited to 'script/rails-deploy-before-down')
-rwxr-xr-x | script/rails-deploy-before-down | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/script/rails-deploy-before-down b/script/rails-deploy-before-down new file mode 100755 index 000000000..ecbf2a7f7 --- /dev/null +++ b/script/rails-deploy-before-down @@ -0,0 +1,101 @@ +#!/bin/bash +# +# rails-post-deploy +# For Ruby on Rails, run this in exec_before_down in vhosts.pl. +# This does all the tasks for a new deploying a new version that can +# be done in a new directory before taking the site down; for example, +# this is appropriate for long-running tasks like asset precompilation. +# +# Copyright (c) 2014 UK Citizens Online Democracy. All rights reserved. +# Email: hello@mysociety.org; WWW: http://www.mysociety.org/ + +set -e +#set -x # debug + +TOP_DIR="$(dirname "$BASH_SOURCE")/.." +cd "$TOP_DIR" + +# make sure that there is an app directory, so are in a rails app tree +if ! [ -d app ] +then + echo "Error: the 'app' directory didn't exist" + exit 1 +fi + +# read config file in for later (STAGING_SITE) +if [ -e "config/general" ] || [ -e "config/general.yml" ] +then + . commonlib/shlib/deployfns + read_conf config/general +else + OPTION_DOMAIN=127.0.0.1:3000 + OPTION_STAGING_SITE=1 +fi + +# create initial log files +if [ -e $TOP_DIR/../logs ] +then + # mySociety servers have logs dir in level above + if ! [ -h log ] && [ -d log ] + then + # If log is a directory rather than a symlink, move that + # directory out of the way: + mv log log.original + fi + ln -sfn $TOP_DIR/../logs log +else + # otherwise just make the directory + if [ -h log ] + then + # remove any old-style symlink first + rm -f log + fi + mkdir -p log +fi + +cd log +touch development.log fastcgi.crash.log production.log test.log +cd .. + +# Force appropriate environment in production +if [ "$OPTION_STAGING_SITE" = "0" ] +then + cat <<-END + + ***************************************************************** + WARNING: About to make config/rails_env.rb which, via special + code in config/boot.rb, forces the Rails environment to be + "production". If this is a development system, please edit your + config/general.yml file and set the STAGING_SITE option to 1, + and also delete the generated config/rails_env.rb file. + Alternatively, you can override config/rails_env.rb at any time + with an environment variable. + ***************************************************************** + +END + echo "ENV['RAILS_ENV'] ||= 'production'" > config/rails_env.rb +fi + +bundle_install_options="" +if [ "$OPTION_STAGING_SITE" = "0" ] +then + bundle_install_options="--without development:test --deployment" +fi +if [ "$OPTION_STAGING_SITE" = "1" ] +then + bundle_install_options="--path vendor/bundle" +fi +if [ "$TRAVIS" = "true" ] +then + bundle_install_options="--without development develop --deployment" +fi +bundle install $bundle_install_options + +bundle exec rake submodules:check + +bundle exec rake themes:install + +if [ "$OPTION_STAGING_SITE" = "0" ] +then + bundle exec rake assets:precompile +fi |