- run_and_report "Running bundle install" \
- $COMMAND_PREFIX bundle install --path $SHARED_PATH/vendor_bundle --local --quiet
-
- echo -n "Ensuring directory and file permissions ..."
- # Ensure correct ownership of a few files
- chown "$WWW_OWNER:" $RELEASE_PATH/config/environment.rb
- chown "$WWW_OWNER:" $RELEASE_PATH/config.ru
- chown "$WWW_OWNER:" $RELEASE_PATH/Gemfile.lock
- chown -R "$WWW_OWNER:" $RELEASE_PATH/tmp || true
- chown -R "$WWW_OWNER:" $SHARED_PATH/log
- case "$RAILSPKG_DATABASE_LOAD_TASK" in
- db:schema:load) chown "$WWW_OWNER:" $RELEASE_PATH/db/schema.rb ;;
- db:structure:load) chown "$WWW_OWNER:" $RELEASE_PATH/db/structure.sql ;;
- esac
- chmod 644 $SHARED_PATH/log/*
- chmod -R 2775 $RELEASE_PATH/tmp || true
- echo "... done."
+ local bundle_path="$SHARED_PATH/vendor_bundle"
+ run_and_report "Running bundle config set --local path $SHARED_PATH/vendor_bundle" \
+ "$bundle" config set --local path "$bundle_path"
+
+ # As of April 2024/Bundler 2.4, `bundle install` tends not to install gems
+ # which are already installed system-wide, which causes bundle activation to
+ # fail later. Work around this by installing all gems manually.
+ find vendor/cache -maxdepth 1 -name '*.gem' -print0 \
+ | run_and_report "Installing bundle gems" xargs -0r \
+ gem install --conservative --ignore-dependencies --local --quiet \
+ --install-dir="$bundle_path/ruby/$ruby_minor_ver.0"
+ run_and_report "Running bundle install" "$bundle" install --prefer-local --quiet
+ run_and_report "Verifying bundle is complete" "$bundle" exec true
+
+ if [ -n "$WWW_OWNER" ]; then
+ cat <<EOF
+
+Assumption: $WEB_SERVICE is configured to serve Rails from
+ $RELEASE_PATH
+Assumption: $WEB_SERVICE and passenger run as $WWW_OWNER
+
+EOF
+
+ echo -n "Creating symlinks to configuration in $CONFIG_PATH ..."
+ setup_confdirs /etc/arvados "$CONFIG_PATH"
+ setup_conffile environments/production.rb environments/production.rb.example \
+ || true
+ setup_extra_conffiles
+ echo "... done."
+
+ echo -n "Ensuring directory and file permissions ..."
+ # Ensure correct ownership of a few files
+ chown "$WWW_OWNER:" $RELEASE_PATH/config/environment.rb
+ chown "$WWW_OWNER:" $RELEASE_PATH/config.ru
+ chown "$WWW_OWNER:" $RELEASE_PATH/Gemfile.lock
+ chown -R "$WWW_OWNER:" $SHARED_PATH/log
+ # Make sure postgres doesn't try to use a pager.
+ export PAGER=
+ case "$RAILSPKG_DATABASE_LOAD_TASK" in
+ # db:structure:load was deprecated in Rails 6.1 and shouldn't be used.
+ db:schema:load | db:structure:load)
+ chown "$WWW_OWNER:" $RELEASE_PATH/db/schema.rb || true
+ chown "$WWW_OWNER:" $RELEASE_PATH/db/structure.sql || true
+ ;;
+ esac
+ chmod 644 $SHARED_PATH/log/*
+ echo "... done."
+ fi