しまった!少なくとも試したつもりだったのですが、
asdf plugin update ruby
しかし、それもしていなかったようです。
![]()
でも、もうすぐです!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 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
redisとpostgresは手動で最新の状態に保つのは問題ないと思いますが、次回OSをインストールしてOSとDiscourseが乖離していることに気づいたときは、考えを変える可能性が高いです!
oxipngが何であるかは不明ですが、間違ったバージョンがプラグイン開発者に問題を引き起こす可能性は低いと思います。jemallocについても同様です。
また、imagemagickのバージョンによって影響を受けるプラグイン開発者がどれだけいるかもわかりません。Rubyとnodejsだけが問題を引き起こす可能性が高いと思います。
Rubyとimagemagickのバージョンもイメージから取得する方が安全かもしれません。Debianに必要なRubyバージョンがある場合、そのスクリプトは削除されると思いますが、ベースイメージからノードバージョンを取得する必要があることを知ったときに、すでにそのロジックを書いていました。
そして、@falcoがasdf plugin update --allで私を救ってくれた時間と、私がこのスクリプトを書いた時間の間に、Rubyのバージョンは3.2.2に上がり、私のコードはそれを捉えてasdfがそれをインストールしました!上記のコードを更新スクリプトに追加しました。これには以下が含まれます。