From 4ffa03a809f19b3676e08e452475c0bc586a5ea9 Mon Sep 17 00:00:00 2001 From: erdgeist Date: Thu, 2 Jul 2026 15:14:06 +0200 Subject: rc.d: gemset auto-detection, occurrence regeneration command MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Derive rvm gemset path from .ruby-version and .ruby-gemset in the app directory, with fallback to current hardcoded values — no more manual rc.d edits on gemset changes - New extra command: service cccms regenerate_occurrences - Poststart staleness check: regenerates occurrences when marker file /var/db/cccms_occurrences_regenerated is missing or older than one year; runs only after successful server start, synchronously for error visibility Deployment note: updated script must be manually copied to /usr/local/etc/rc.d/cccms on live. --- doc/rc.d_cccms | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/doc/rc.d_cccms b/doc/rc.d_cccms index 678ae75..909b372 100644 --- a/doc/rc.d_cccms +++ b/doc/rc.d_cccms @@ -11,10 +11,14 @@ rcvar="cccms_enable" desc="CCC CMS unicorn server" cccms_dir="${cccms_dir:-/usr/local/www/cccms}" +rvm_ruby_version=$(cat ${cccms_dir}/.ruby-version 2>/dev/null || echo "ruby-3.2.11") +rvm_gemset=$(cat ${cccms_dir}/.ruby-gemset 2>/dev/null || echo "rails8-upgrade") +rvm_gemset_path="/usr/local/rvm/gems/${rvm_ruby_version}@${rvm_gemset}" + +command="${rvm_gemset_path}/wrappers/unicorn" + cccms_unicorn_config="${cccms_unicorn_config:-/usr/local/etc/unicorn.rb}" -# command="/usr/local/rvm/gems/ruby-3.2.11@rails7-upgrade/wrappers/unicorn" -command="/usr/local/rvm/gems/ruby-3.2.11@rails8-upgrade/wrappers/unicorn" command_args="-c ${cccms_unicorn_config} -E production -D" cccms_chdir="${cccms_dir}" @@ -23,9 +27,21 @@ procname="ruby" required_dirs="${cccms_dir}" -extra_commands="reload" +extra_commands="reload regenerate_occurrences" sig_reload="USR2" +regenerate_occurrences_cmd="cccms_regenerate_occurrences" +cccms_regenerate_occurrences() +{ + cd ${cccms_dir} && \ + ${rvm_gemset_path}/wrappers/bundle \ + exec rails runner \ + 'Event.find_each { |e| Occurrence.generate(e) }' \ + >> /var/log/unicorn.stderr.log 2>&1 && \ + touch /var/db/cccms_occurrences_regenerated + echo "Occurrences regenerated." +} + start_precmd="cccms_prestart" cccms_prestart() { @@ -34,6 +50,15 @@ cccms_prestart() chown www:www /var/log/unicorn.stderr.log } +start_postcmd="cccms_poststart" +cccms_poststart() +{ + if [ -z "$(find /var/db/cccms_occurrences_regenerated -mtime -365 2>/dev/null)" ]; then + echo "Occurrences stale or missing, regenerating..." + cccms_regenerate_occurrences + fi +} + export PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin export RAILS_ENV=production export HOME=/root -- cgit v1.3