Разработка с использованием Docker
Поскольку Discourse работает в Docker, вы можете запускать Discourse напрямую из вашей исходной директории, используя контейнер для разработки Discourse.
Преимущества: Не нужно устанавливать зависимости системы, не требуется никакой конфигурации для быстрой настройки среды разработки.
Недостатки: Будет работать немного медленнее, чем нативная среда разработки на Ubuntu, и значительно медленнее, чем нативная установка на MacOS.
Смотрите также Developing Discourse using a Dev Container
Шаг 1: Установка Docker
Ubuntu
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install -y docker-ce
19.10
sudo apt-get install docker.io
sudo usermod -a -G docker $USER
sudo reboot
Windows WSL: Ubuntu
Вы можете выполнить вышеуказанные команды в WSL, но все файлы должны находиться внутри файловой системы WSL. Например, всё работает отлично, если они находятся в ~/discourse, но не работают, если размещены в /mnt/c/discourse.
MacOS
Образ для разработки Discourse доступен только для архитектур x86_64. Mac с чипом M1 могут запустить образ с помощью эмуляции архитектуры, но Discourse, скорее всего, не загрузится из-за отсутствия поддержки inotify в QEMU.
Вместо этого используйте Install Discourse on macOS for development
Вариант 1: Загрузите упакованный .dmg из Docker store
Вариант 2: brew install docker
Шаг 2: Запуск контейнера
Склонируйте репозиторий Discourse на ваше локальное устройство.
git clone https://github.com/discourse/discourse.git
cd discourse
(из корня исходного кода)
d/boot_dev --init
# подождите, пока:
# - будут установлены зависимости,
# - выполнена миграция базы данных,
# - создан пользователь администратора (вам потребуется с ним взаимодействовать)
# В одном терминале:
d/rails s
# А в отдельном терминале
d/dev --only ember
…затем откройте браузер по адресу http://localhost:3000, и вуаля! Вы должны увидеть Discourse.
Символические ссылки плагинов
Среда разработки Docker поддерживает символические ссылки в директории plugins/ с одной оговоркой:
При создании новой символической ссылки плагина контейнер Docker необходимо перезапустить с помощью:
d/shutdown_dev; d/boot_dev
Примечания:
-
Для тестирования электронной почты запустите MailHog :
d/mailhog -
Если отсутствуют необходимые gem-пакеты, выполните:
d/bundle install -
Если требуется миграция базы данных:
d/rake db:migrate RAILS_ENV=development -
Когда вы закончите, вы можете остановить контейнер Docker с помощью:
d/shutdown_dev -
Данные сохраняются между запусками контейнера в вашей исходной директории
tmp/postgres. Если по какой-то причине вы хотите сбросить базу данных, выполните:sudo rm -fr data -
Если вы видите ошибки типа «отказано в доступе при попытке подключения к Docker», выполните:
sudo usermod -aG docker ${USER} sudo service docker restart -
Если вы хотите глобально открыть порты контейнера для сети (по умолчанию отключено), используйте:
d/boot_dev -p -
Dockerfile взят из discourse/discourse_docker на GitHub, в частности image/discourse_dev.
Запуск тестов
d/rake autospec
Для запуска тестов конкретного плагина можно также сделать следующее:
d/rake plugin:spec["discourse-follow"]
Или даже ещё более конкретно:
my-machine:~/discourse$ d/shell
discourse@discourse:/src$ RAILS_ENV=test /src/bin/rspec plugins/discourse-follow/spec/lib/updater_spec.rb:37
Этот документ находится под контролем версий — предложите изменения на GitHub.