Estou tentando executar minha instalação de desenvolvimento no meu laptop Linux.
Tenho um script que obtém as versões do Ruby, imagemagick e nodejs do discourse_docker e as define com asdf. Aqui está um trecho dele:
RUBY_VERSION=$(grep "^ARG RUBY_VERSION" $DISCOURSE_DOCKER_SRC/image/base/slim.Dockerfile |cut -d'=' -f2)
echo "GOT RUBY VERSION!! $RUBY_VERSION"
asdf install ruby $RUBY_VERSION
asdf global ruby $RUBY_VERSION
IMAGE_MAGICK_VERSION=$(grep -e ^IMAGE_MAGICK_VERSION ~/src/discourse-repos/discourse_docker/image/base/install-imagemagick|cut -d'"' -f2)
echo "GOT IMAGE_MAGICK_VERSION: $IMAGE_MAGICK_VERSION"
asdf install imagemagick $IMAGE_MAGICK_VERSION
asdf global imagemagick $IMAGE_MAGICK_VERSION
# 2023-04-24 debian and pop!os have different nodejs versions
NODE_VERSION=$(docker run discourse/base:release bash -c 'node --version'|cut -d'v' -f2)
#NODE_VERSION=$(grep node ~/src/discourse-repos/discourse/.tool-versions|awk '{print $2}')
echo "GOT NODEJS version: $NODE_VERSION"
asdf install nodejs $NODE_VERSION
asdf global nodejs $NODE_VERSION
Mas quando executo bin/ember-cli, recebo isto:
./bin/ember-cli
warning Resolution field "unset-value@2.0.1" is incompatible with requested version "unset-value@^1.0.0"
error ember-template-lint@6.0.0: The engine "node" is incompatible with this module. Expected version "^18.18.0 || ^20.9.0 || >=21.1.0". Got "18.17.1"
error Found incompatible module.
18.17.1 é a versão no Discourse. Por que preciso de uma versão diferente para desenvolvimento do que o Discourse está executando?
Quando atualizo para 18.18.0 e então executo ember-cli, recebo um “SyntaxError: Unexpected token in JSON at position 219260”. . . algo que não consigo entender completamente.
Agora, o que devo tentar?
Existe alguma maneira confiável de ver se meu ambiente de desenvolvimento é apropriado para fazer desenvolvimento? Parece que uma vez por mês passo uma hora ou mais tentando fazer meu sistema de desenvolvimento funcionar. As pessoas (como @sam e @falco) realmente usam o ambiente de desenvolvimento docker? Talvez eu devesse ter como alvo esse contêiner para obter as versões de Ruby e Node?