Я пытаюсь настроить новую машину для разработки, но у меня отсутствует bundler. Я зашел на https://raw.githubusercontent.com/discourse/install-rails/master/linux и увидел, что там всё ещё устанавливается ruby_version="2.7.6". К тому же повторное выполнение этого скрипта никогда не казалось надёжным способом обновления машины для разработки.
При разработке своего дашборда я передаю множество настроек через командную строку с помощью скрипта pfaffmanager-discourse, который также обновляет последнюю версию Discourse и мигрирует базу данных. Думаю, я смогу каким-то образом реализовать это и в версии с Docker.
Неужели я просто устарел в своих взглядах, считая, что у меня должна быть нативная среда разработки, а не работа в Docker?
Я постоянно использую Ansible для настройки новых машин; единственное, чего не хватает в этом процессе, — это скрипта для разработки Discourse. Хотели бы другие что-то подобное? Можем ли мы перенести это в основную ветку, чтобы можно было просто клонировать Discourse и запустить playbook для установки Ruby, ImageMagick и всего остального в нужных версиях?
На данный момент я перешёл на решение с использованием Docker Compose, где Dockerfile определяет сборку Discourse, над которой я работаю. Для базовых задач это пока работает хорошо, но, очевидно, работает немного медленнее, чем прямая среда Ubuntu «на железе»…
(Вероятно, не в таком порядке) — это почти полностью покрывает потребности. Текущая версия Redis, включённая в Ubuntu, хороша для 99% разработчиков (это 7.0.7, а не 6.x) О! Теперь 7.0.7 уже включена по умолчанию. Но для Redis также есть плагин asdf.
Такой скрипт было бы довольно легко поддерживать в ядре проекта при обновлении версий Node, ImageMagick или Ruby. Тогда любой ленивый разработчик мог бы запускать этот скрипт раз в неделю или при каждом новом pull-запросе, чтобы иметь актуальную среду разработки. За час или три кто-то толковый мог бы сделать его кроссплатформенным для Linux, Mac/homebrew и Windows/WSL. К счастью, у меня сейчас нет удобного доступа к Windows, поэтому я не предлагаю свою помощь.
Но, думаю, если я буду следить за изменениями в discourse_docker, то замечу обновления, и мои самодельные дополнения к моему ansible-плейбуку newmachine теперь могут справиться с задачей.
Спасибо за подсказку! Теперь, кажется, я смогу настроить среду разработки на любой машине одной командой.
Хотя я понимаю, как было бы здорово, если бы всё это обрабатывалось автоматически, для меня управление моей средой разработки, обновлениями и всем остальным является неотъемлемой частью работы.
Это неприятно для новичков, и именно здесь такие инструменты, как GitHub Codespaces, проявляют себя с лучшей стороны, но для людей, погружённых в повседневную разработку на Discourse, понимание и умение работать с окружением разработки полезно для того, чтобы понять, как все части сочетаются друг с другом.
Что ж, человек, занимающийся бенчмаркингом Ruby, далёк от типичного разработчика, но это справедливо! Думаю, мы все немного разные в том, как предпочитаем управлять вещами.
Благодаря твоей рекомендации asdf, я думаю, что с её помощью смогу держать всё в порядке на моих разных машинах.
Я уже провёл большую часть работы по совместимости при обновлении до версии 3.1, поэтому мы полностью готовы к переходу на 3.2 и сделаем это в ближайшее время.
Эта проблема, похоже, решена в последней версии, спасибо тому, кто её исправил! Это критически важная функция для эффективного создания тестовых фикстур.