Привет! Во-первых, я бы предпочёл возможность отправить этот отчёт об ошибке напрямую в репозиторий: GitHub - discourse/discourse_theme: CLI helper for developing Discourse themes · GitHub, так как не уверен, что нахожусь здесь в нужном месте.
discourse_theme — это инструмент на Ruby, но я не хочу устанавливать Ruby на свой компьютер. Кроме того, чтобы обеспечить единообразие версий Ruby во всей моей команде, я создал этот Docker-образ:
# syntax = docker/dockerfile:1.10
# Убедитесь, что RUBY_VERSION совпадает с версией Ruby в файлах .ruby-version и Gemfile
ARG RUBY_VERSION=3.4.2
ARG ALPINE_VERSION=3.20
FROM ruby:$RUBY_VERSION-alpine${ALPINE_VERSION}
# Установка пакетов
RUN --mount=type=cache,id=dev-apk-cache,sharing=locked,target=/var/cache/apk \
--mount=type=cache,id=dev-apk-lib,sharing=locked,target=/var/lib/apk \
apk add \
ca-certificates \
bash \
tzdata \
xz-libs \
gcompat \
zstd-libs \
libpq
RUN gem install discourse_theme
ENTRYPOINT ["discourse_theme"]
Запускать его можно так:
# Сначала сборка
docker build -t discourse_theme:latest .
# Запуск в режиме наблюдения
docker run -i -t --rm -v $(pwd):/root -w /root discourse_theme:latest watch .
Проблема, о которой я хочу сообщить здесь, касается интерактивности CLI.
В Docker нет поддержки взаимодействия с клавиатурой.
Я вижу это при запуске:
Если я нажимаю стрелку, сообщение о помощи исчезает, но выделенная зелёным опция «selected» никогда не перемещается:
Поэтому я считаю, что это ошибка в Gem. Он обнаружил нажатие клавиши, но не переместил выделение. Я протестировал множество нажатий клавиш.
Другой тест, который я провёл: запустил bash внутри образа и запустил discourse_theme оттуда, но проблема осталась той же.
$ docker run -it --rm -v $(pwd):/root -w /root --entrypoint /bin/bash discourse_theme:latest
9f5736f3265e:~# discourse_theme watch .
Это нормальное поведение для CLI-инструментов на Ruby или здесь есть ошибка? Спасибо.

