Возвращаемся к теме: поддержание актуальной среды разработки

Но теперь Discourse требует версию 3.2.1, и asdf, похоже, не знает о версии 3.2.1. Как вы это решаете?

asdf list all ruby|grep 3.2.1

возвращает пустой результат.

Поскольку ваша работа включает бенчмарки версий Ruby, это имеет смысл, но разве подавляющее большинство разработчиков внутри и вне CDCK не нуждается просто в рабочей среде разработки без необходимости знать, какие библиотеки требуются для корректной компиляции ImageMagick (или чего-то подобного)?

Что-то нужно обновить на вашей стороне, потому что ruby-build точно содержит версию 3.2.1

Мне кажется, @pfaffman забыл выполнить asdf plugin update --all?

Чёрт! Клянусь, что я хотя бы пробовал выполнить

asdf plugin update ruby

но, похоже, я не сделал даже этого. :crying_cat_face: :person_shrugging:

Но теперь я очень близок! Вот мой скрипт, который забирает Discourse, обновляет Ruby, imagemagick и nodejs, а также выполняет миграцию базы данных.

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 и pop!os разные версии nodejs
  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

Я считаю, что вручную поддерживать актуальность версий redis и postgres пока нормально, хотя в следующий раз, когда я буду устанавливать ОС и обнаружу, что моя ОС и Discourse разошлись в версиях, я, вероятно, передумаю!

Я не совсем понимаю, что такое oxipng, но не думаю, что неверная версия вызовет проблемы у разработчика плагинов. То же самое касается jemalloc.

И, честно говоря, я не уверен, сколько разработчиков плагинов могут столкнуться с проблемами из-за версий imagemagick. Я думаю, что только Ruby и nodejs, скорее всего, станут критическими препятствиями.

Возможно, безопаснее получать версии Ruby и imagemagick также из образа, так как я подозреваю, что когда в debian появится необходимая версия Ruby, этот скрипт исчезнет, но я уже написал эту логику, когда узнал, что мне нужно извлекать версию node из базового образа.

И за время между тем, как @falco спас меня командой asdf plugin update --all, и моментом написания этого скрипта, версия Ruby обновилась до 3.2.2, и мой код это уловил, а asdf установил её! Я добавил вышеприведённый код в свой скрипт обновления, который включает следующее: