Ripresa: mantenimento di un ambiente di sviluppo aggiornato

DOH! Giuro che avevo provato almeno a fare un

asdf plugin update ruby

ma a quanto pare non l’ho fatto neanche. :crying_cat_face: :person_shrugging:

Ma ora, ci sono quasi! Ecco il mio script che estrae Discourse, aggiorna Ruby, imagemagick e nodejs, e migra il database.

DISCOURSE_SRC=/home/pfaffman/src/discourse-repos/discourse
DISCOURSE_DOCKER_SRC=/home/pfaffman/src/discourse-repos/discourse_docker
cd $DISCOURSE_SRC

  git -C $DISCOURSE_DOCKER_SRC pull https://github.com/discourse/discourse_docker
  DISCOURSE_BASE=$(grep -e ^image= $DISCOURSE_DOCKER_SRC/launcher|cut -d'\"' -f2)
  cd -

  docker pull $DISCOURSE_BASE
  asdf plugin add nodejs #https://github.com/asdf-vm/asdf-nodejs.git
  asdf plugin add ruby #https://github.com/asdf-vm/asdf-ruby.git
  asdf plugin add imagemagick
  asdf plugin update --all
  RUBY_VERSION=$(grep -e ^RUBY_VERSION $DISCOURSE_DOCKER_SRC/image/base/install-ruby|cut -d'\"' -f2)
  asdf install ruby $RUBY_VERSION
  asdf local ruby $RUBY_VERSION
  IMAGE_MAGICK_VERSION=$(grep -e ^IMAGE_MAGICK_VERSION ~//src/discourse-repos/discourse_docker/image/base/install-imagemagick|cut -d'\"' -f2)
  asdf install imagemagick $IMAGE_MAGICK_VERSION
  asdf local imagemagick $IMAGE_MAGICK_VERSION
  # 2023-04-24 debian and pop!os have different nodejs versions
  NODE_VERSION=$(docker run discourse/base:2.0.20230420-0104 bash -c 'node --version'|cut -d'v' -f2)
  asdf install nodejs $NODE_VERSION
  asdf local nodejs $NODE_VERSION
  cd $DISCOURSE_SRC
  git checkout main
  git pull
  bundle install
  ./bin/rake db:migrate
  RAILS_ENV=test ./bin/rake db:migrate

Penso che vada bene tenere aggiornati redis e postgres manualmente, anche se la prossima volta che farò un’installazione del sistema operativo e scoprirò che il mio sistema operativo e Discourse sono divergenti, probabilmente cambierò idea!

Non mi è chiaro cos’è oxipng, ma non credo che una versione sbagliata causi problemi a uno sviluppatore di plugin. Lo stesso vale per jemalloc.

E, onestamente, non sono sicuro di quanti sviluppatori di plugin saranno interessati alle versioni di imagemagick. Penso che solo Ruby e nodejs possano essere dei blocchi.

Potrebbe essere più sicuro ottenere anche le versioni di ruby e imagemagick dall’immagine, poiché sospetto che quando debian avrà la versione Ruby richiesta, quello script scomparirà, ma avevo già scritto quella logica quando ho scoperto di dover estrarre la versione di node dall’immagine di base.

E nel tempo trascorso da quando @falco mi ha salvato con asdf plugin update --all e quando ho scritto questo script, la versione di Ruby è passata a 3.2.2, e il mio codice l’ha rilevata e asdf l’ha installata! Ho aggiunto il codice sopra al mio script di aggiornamento, che include questo:

1 Mi Piace