Ripresa: mantenimento di un ambiente di sviluppo aggiornato

Ma ora Discourse vuole 3.2.1 e asdf sembra non conoscere la 3.2.1. Come lo stai gestendo?

asdf list all ruby|grep 3.2.1

non restituisce nulla.

Dato che il tuo lavoro include il benchmarking delle versioni di ruby, questo ha molto senso, ma la stragrande maggioranza degli sviluppatori, dentro e fuori CDCK, non ha bisogno di un ambiente di sviluppo funzionante senza dover sapere quali librerie sono necessarie per compilare correttamente imagemagick (o qualsiasi altra cosa)?

Qualcosa deve essere aggiornato da parte tua perché ruby-build certamente ha 3.2.1

4 Mi Piace

La mia ipotesi è che @pfaffman abbia dimenticato di eseguire asdf plugin update --all?

2 Mi Piace

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

Questo argomento è stato chiuso automaticamente 30 giorni dopo l’ultima risposta. Non sono più consentite nuove risposte.