Установка Discourse на macOS для разработки

:warning: Это руководство содержит инструкции по установке среды разработки для macOS. Для руководств по развертыванию в производственной среде см.: Install Discourse in production with the official supported instructions

Итак, вы хотите настроить Discourse на macOS для разработки и экспериментов?

Мы предполагаем, что у вас на Mac не установлены Ruby, Rails, Postgres или Redis. Давайте начнём :rocket:!

Установка зависимостей Discourse

В вашей системе должны быть установлены следующие пакеты:

** опционально

Перезапустите терминал

Теперь, когда зависимости Discourse установлены, перейдём к установке самого Discourse.

Перезапуск терминала

Выход из оболочки и её повторный запуск гарантируют, что терминал корректно подхватит пути к установленным пакетам.

Клонирование репозитория Discourse

Склонируйте репозиторий Discourse в папку ~/discourse:

git clone https://github.com/discourse/discourse.git ~/discourse

~ обозначает домашнюю папку, поэтому исходный код Discourse будет доступен в вашей домашней директории.

Инициализация Discourse

Перейдите в папку Discourse:

cd ~/discourse

Установите необходимые gems:

bundle install

Установите зависимости JS:

pnpm install

Далее выполните следующие команды для настройки локального экземпляра Discourse:

bundle exec rake db:create
bundle exec rake db:migrate
RAILS_ENV=test bundle exec rake db:create db:migrate

Запустите серверы Rails и Ember. У вас есть два варианта.

Вариант 1: используя две отдельные вкладки/окна терминала, запустите Rails и сборщик фронтенда отдельно:

bundle exec rails server

и

bin/dev --only ember

Вариант 2: используя только одну вкладку/окно терминала:

bin/dev # запускает Pitchfork и сборщик фронтенда вместе

:tada: Теперь вы можете перейти по адресу http://localhost:3000, чтобы увидеть свою локальную установку Discourse. (Обратите внимание, что первая загрузка может занять до минуты, так как сервер прогревается.)

Вы также можете попробовать запустить тесты:

bundle exec rake autospec

Все (или почти все) тесты должны пройти успешно.

Создание нового администратора

Чтобы создать нового администратора, выполните следующую команду:

RAILS_ENV=development bundle exec rake admin:create

Следуйте подсказкам для создания учётной записи администратора.

Настройка почты

Запустите MailHog:

mailhog

Поздравляем! Теперь вы администратор своей собственной установки Discourse!

Удачной разработки! Чтобы начать, ознакомьтесь с Руководством для начинающих по созданию плагинов Discourse.


Этот документ находится под версионным контролем — предлагайте изменения на GitHub.

78 лайков
Setup discourse on Mac OS
Running Discourse on Docker for Mac
Localhost:3000/users gives no-results
How to install Discourse on windows
How to install Discourse locally?
Best dev installation method for running on macOS?
MacOS Installation Gem::FilePermissionError
Migrate a NodeBB forum with Redis to Discourse
Starting discourse fails with bootstrap error
Error after cleaning tmp folder
Please help, how do I install Discourse on macOS?
Help me setup my Discourse development environment
Discourse standalone
UndefinedTable: ERROR: relation "web_hook_event_types" when trying to run rspec test
Local installation internal use only
Migrate a PunBB forum to Discourse
Migrate a phpBB3 forum to Discourse
Migrate a FluxBB forum to Discourse
Migrate a vBulletin 3 forum to Discourse via XenForo
Migrate a MyBB forum to Discourse
Migrate a NodeBB forum with MongoDB to Discourse
Migrate a Ning forum to Discourse
Migrate a Phorum forum to Discourse
Migrate from another forum to Discourse
Migrate a Kunena 3 forum to Discourse
Migrate a bbPress WordPress plugin forum to Discourse
Install Discourse for development using Docker
Use the Discourse API ruby gem
Regarding the installation - docker
Set Environmental Variables
Need help integrating code wrote on Edittext to the Discourse
Keyboard navigation messes up the search menu
WP-Discourse not connected and admin email not recognized
Contributing to Discourse development
How to install discussions on localhost in my mac?
How to install Discourse for Wordpress locally running on MAMP
Error when building: "Runtime Error: discourse does not support compiling scss/sass files via sprockets"
Migrate from GetSatisfaction to Discourse
Case study of an amateur plugin author
Upgrading Mathjax to version 4
Windows server publish method
Discourse as Your First Rails App
Topic List Previews (TLP)
Enable CORS on localhost for DiscourseConnect
Category option: max topics per user (2 use-case examples)
Can't deploy to heroku
[PAID] Import from Legacy Postgres DB
Vagrant based server failing on db:migrate
Change unicorn port from 3000 in development
I want to build a debug version of discourse
Moderation Tools
Rails server --daemon and plugins
Installing problem - bundle install
Nginx Performance Report plugin incompatible with development environment setup script
Rake aborted message is showing when installing vagrant development
Update PhantomJS to latest for Ubuntu dev guide?
Cannot Backup my Development Instance (Fails)
Install error : Protocol violation
Can't set up dev environment due to cppjieba_rb failing to install
How to edit the discourse files? A development box?
How to add a new language
How to relax Content Security Policy
Installing Discourse for macOS Development Using asdf and docker-compose
Override profile background via SSO
Can't set up dev environment due to cppjieba_rb failing to install
Stuck in infinite loop in Mac terminal after source ~/.bashrc
Install on macOS – Failure: Scheduler::Defer can pause and resume
Disabling SSO in development environment
Local development and deploying from same repo
Discourse Connect on Local instance is not working
Can't start localhost server -- file was built for x86_64 which is not the architecture being linked (i386)
Please help, how do I install Discourse on macOS?
How to connect to an external database running on localhost
How can I include discourse in my local dev stack?
Global messages on 94632 timed out, restarting process, 95535 successfully terminated by `TERM` signal
Cannot get embedding to work
/admin/config/emoji non responsive/locks up
App.yml file does not exist when installing Discourse locally
Ember-cli error on local MacOS development
Importing / migrating from Zendesk Community to Discourse
Redis version error when I run bundle exec db:create
Dev environment setup failed on bundle install
Set up a local Discourse Development Environment?
[Need help][MacOS M1 dev installation] ArgumentError unknown keywords

If anyone is getting failing specs with most of them being .count errors, then try the following:

RAILS_ENV=test bundle exec rake db:reset

I had a problem where development data somehow got into my test database and was causing lots of failures.

7 лайков

Is it possible to reset a discourse completely?

2 лайка

Yes, do:

rake db:drop db:create db:migrate

Note that this will wipe everything and you will have to create your Admin user account again.

11 лайков

Can someone assist me in how I can update my discourse?

/launcher rebuild app

returns an error.

1 лайк

./launcher rebuild app is for discourse_docker based production setup. To update local/development Discourse instance you need:

cd ~/discourse
git pull origin master
8 лайков

I get this error @techAPJ,

error: Your local changes to the following files would be overwritten by merge:
	.gitignore
Please commit your changes or stash them before you merge.
Aborting

The error message is pretty clear:

Please commit your changes or stash them before you merge.

If you want to ignore your local changes, do:

git fetch origin
git reset --hard origin/master
7 лайков

Следуя руководству с форума Ruby on Rails, я застрял на шаге 7.

Это, вероятно, очень «начальный» вопрос, но как мне «указать» на экспериментальную ветку, на которую была ссылка в той теме? Я попробовал несколько вариантов, но каждый раз получал сообщение Unknown command mini_racer.

1 лайк

Они вполне могут задать вопрос здесь.

В этом руководстве мы ссылаемся на специфические инструкции для M1, которые мы написали и которые упоминаются на форуме Rails.

Мне нужно будет позже посмотреть на моём M1 Air, и, возможно, мои коллеги, которые недавно настроили новые Mac, знают лучше, нужно ли это вообще сейчас, но в шаге 7 есть пример того, как указать ветку:

gem 'mini_racer', github: 'rubyjs/mini_racer', branch: 'refs/pull/186/head'

Так что вам нужно отредактировать эту строку в локальной версии discourse/Gemfile:

а затем выполнить bundle install.

4 лайка

Ссылка находится прямо вверху оригинального сообщения.

Тема на форуме Ruby on Rails уже много месяцев неактивна. Автор оригинального поста не проявлял активности с февраля и не отвечал ни на один комментарий с просьбой о помощи.

Здесь больше людей, готовых мне помочь. Просто к сведению. :wink:

Я попробовал скопировать это в Терминал, но получил ту же ошибку «Unknown command mini_racer», что и раньше.

Признаю, что руководство с форума Ruby on Rails в этом плане не так понятно, как я надеялся.

Заранее извиняюсь… :pray:

2 лайка

Это не команда для запуска. Вам нужно РЕДАКТИРОВАТЬ фактический текстовый файл под названием «Gemfile», расположенный внутри директории discourse.

1 лайк

Ой! :facepalm:

Спасибо! Сейчас же попробую.

На мой взгляд, кому-то следует отредактировать руководство на форуме Ruby on Rails и предоставить дополнительные разъяснения касательно шага 7. Это лишь моё мнение.

Я скоро вернусь. Подождите секунду…

1 лайк

Извините, мне нужно бежать, но, кажется, исправление для mini_racer на Mac M1 уже внесено в основную ветку. Я только что проверил свой Gemfile на Mac M1, и он не был изменён. Так что, думаю, вы можете пропустить шаг 7.

3 лайка

Я выполнил шаг 8 и получил ошибку Could not locate Gemfile.

Я (думаю) смог разобраться со шагом 7, но шаг 8 по-прежнему вызывает трудности и выдаёт ошибку, упомянутую выше.

Вам нужно находиться внутри директории discourse при запуске bundle install.

Привет, @merefield! Можешь немного подробнее описать свою удалённую настройку?

При разработке темы я могу вносить изменения на живом сайте, но для разработки плагина, похоже, нет другого выхода, кроме как делать это на локальной машине, имея там всю кодовую базу Discourse (с моим плагином поверх неё).

В результате при любом изменении (кроме CSS) при разработке плагина после перезагрузки: 1) включается вентилятор моего компьютера и 2) перезагрузка занимает solid 30 секунд. А если нужно перезапустить сервер, это занимает несколько минут.

Эти задержки сильно накапливаются — в итоге на реализацию чего-то может уйти целый час, тогда как при обычном рабочем процессе (где есть горячая перезагрузка или максимум 2–3 секунды на изменение) это заняло бы 15 минут.

Поэтому буду благодарен за любые предложения по ускорению процесса.

1 лайк

Это, пожалуй, лучше обсудить в теме Ubuntu, так как я запускаю установку на облачном сервере с nginx и полной настройкой DNS (без Docker), поэтому я фактически работаю с доменом. Всё выполняется из терминала. Сейчас у меня даже Ember CLI отлично работает в этой среде.

Это не самый быстрый вариант, но достаточно быстрый. Плюс в том, что можно запускать и тестировать полноценные HTTPS-сервисы обратного вызова.

Самая быстрая среда для разработки плагинов, о которой я знаю, — это локальный Docker Dev на WSL2, который летит. К тому же её очень просто поддерживать. К сожалению, discourse_theme, насколько мне известно, в этой среде пока не работает, поэтому для этой работы я вернулся к своему облачному серверу.

Немного странно, почему Apple отстаёт в этом вопросе? Инженеры Microsoft показали себя очень сообразительными.

3 лайка

В случае, если у кого-то возникают ошибки при установке Ruby 2.7.3, похоже, что после Xcode 12 что-то изменилось, что ломает процесс установки с помощью rbenv:

Я постоянно получал это сообщение, даже несмотря на то, что у меня установлены последние версии psych и libyaml:

Похоже, что в вашей установке Ruby отсутствует модуль psych (для вывода YAML).
Чтобы устранить это предупреждение, установите libyaml и переустановите Ruby.

Я попробовал обходной путь, предложенный в руководстве, но продолжал получать ту же ошибку и в итоге был вынужден использовать rvm:

rvm install 2.7.3
1 лайк

Что касается того, как ускорить программирование при создании плагина, я недавно изменил свой подход. И это работает отлично. Суть в том, чтобы перенести все элементы фронтенда в компонент темы, а в самом плагине писать только бэкенд-код. Я знаю, что другие уже пришли к такому решению. Но теперь, когда я делаю именно так, программирование становится намного быстрее и приятнее. Подробнее здесь.

3 лайка