Install Discourse on macOS for development

У меня возникли проблемы с настройкой Discourse для разработки на моём Mac с процессором M1.

Гемы fast_xs и gc_tracer не устанавливаются с почти одинаковыми ошибками. Ниже я привёл сообщение об ошибке для fast_xs. Кто-нибудь может помочь?

Building native extensions. This could take a while...
ERROR:  Error installing fast_xs:
	ERROR: Failed to build gem native extension.

    current directory: /Users/sisirkoppaka/.gem/ruby/3.2.0/gems/fast_xs-0.8.0/ext/fast_xs
/Users/sisirkoppaka/.rubies/ruby-3.2.0/bin/ruby -I /Users/sisirkoppaka/.rubies/ruby-3.2.0/lib/ruby/site_ruby/3.2.0 extconf.rb
checking for assert.h... yes
creating Makefile

current directory: /Users/sisirkoppaka/.gem/ruby/3.2.0/gems/fast_xs-0.8.0/ext/fast_xs
make DESTDIR\= sitearchdir\=./.gem.20240203-10621-j9d0j7 sitelibdir\=./.gem.20240203-10621-j9d0j7 clean

current directory: /Users/sisirkoppaka/.gem/ruby/3.2.0/gems/fast_xs-0.8.0/ext/fast_xs
make DESTDIR\= sitearchdir\=./.gem.20240203-10621-j9d0j7 sitelibdir\=./.gem.20240203-10621-j9d0j7
compiling fast_xs.c
fast_xs.c:144:39: error: incompatible function pointer types passing 'VALUE (VALUE)' (aka 'unsigned long (unsigned long)') to parameter of type 'VALUE (*)(VALUE, VALUE)' (aka 'unsigned long (*)(unsigned long, unsigned long)') [-Wincompatible-function-pointer-types]
  144 |         array = rb_rescue(unpack_utf8, self, unpack_uchar, self);
      |                                              ^~~~~~~~~~~~
/Users/sisirkoppaka/.rubies/ruby-3.2.0/include/ruby-3.2.0/ruby/internal/iterator.h:364:62: note: passing argument to parameter 'r_proc' here
  364 | VALUE rb_rescue(VALUE (*b_proc)(VALUE), VALUE data1, VALUE (*r_proc)(VALUE, VALUE), VALUE data2);
      |                                                              ^
1 error generated.
make: *** [fast_xs.o] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/sisirkoppaka/.gem/ruby/3.2.0/gems/fast_xs-0.8.0 for inspection.
Results logged to /Users/sisirkoppaka/.gem/ruby/3.2.0/extensions/arm64-darwin-22/3.2.0-static/fast_xs-0.8.0/gem_make.out```

Как это было решено?

При выполнении

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

после запуска серверов Redis и Postgres возникает следующая ошибка:

fe_sendauth: no password supplied
Couldn't create 'discourse_development' database. Please check your configuration.
rake aborted!

Если выполнить это без запуска серверов Redis и Postgres, возникает следующая ошибка:

bundle exec rake db:migrate
RAILS_ENV=test bundle exec rake db:create db:migrate
Couldn't connect to Redis
rake aborted!

Подскажите, пожалуйста, что делать, я в замешательстве.

Спасибо

На данный момент мне удалось решить проблему с помощью следующих команд:

bundle config build.fast_xs --with-cflags=\"-Wno-incompatible-pointer-types\"
bundle config build.gc_tracer --with-cflags=\"-Wno-incompatible-pointer-types\"
bundle install

Обратите внимание, что мы решили отказаться от обоих этих необязательных gems в

и

3 лайка

После применения этого варианта, как затем остановить сервер?

Это, похоже, не работает (больше не работает), я получаю:

fatal: couldn't find remote ref master

Не работает и версия для перезаписи локальных изменений (на 2 поста ниже).

Есть какие-то идеи, как обновить установку Discourse для разработчиков на macOS?

master было переименовано в main некоторое время назад. Попробуйте

cd ~/discourse
git pull origin main
4 лайка

Спасибо, Саймон, это помогло.

Мне удалось выполнить команду git, но где-то по пути я сломал своё окружение для разработки. Теперь у меня нерабочее окружение: открывается главная страница Discourse для разработчиков, но ничего не работает (создание новой темы бесконечно крутится).

Как проще всего сбросить или выполнить чистую установку моего окружения разработки Discourse?

Я пытался снова выполнить команды установки в начале этой темы (ошибка возникает на команде pnpm install). Также я пробовал запустить rake db:drop db:create db:migrate, предложенный Арпитом ранее в этой теме, но успеха нет.

Мне удалось обновить установки pnpm и node, выполнив команды npm install -g pnpm и brew install node, что позволило мне снова запустить инструкции по установке. Однако теперь я получаю следующую ошибку сборки:

Module not found: Error: Can't resolve '@ember/debug' in '/Users/pieces/discourse/app/assets/javascripts/node_modules/ember-tracked-storage-polyfill/addon/index.js'

Вы запускали pnpm install после выполнения npm install -g pnpm?

Подробности о переходе на использование pnpm для управления пакетами можно найти здесь: Discourse core is switching to pnpm for JS package management.

2 лайка

Да, я это сделал, но ошибка всё ещё сохраняется.

Я выполнил следующие шаги:

  1. Обновил пакеты на Mac (перезапустил начальный скрипт)
  2. Запустил bundle install
  3. Запустил pnpm install
  4. Запустил:
    bundle exec rake db:create
    bundle exec rake db:migrate
    RAILS_ENV=test bundle exec rake db:create db:migrate
  5. Запустил bundle exec rails server
  6. Запустил bin/ember-cli в отдельном окне терминала

При выполнении шага 6 возникает ошибка.

Судя по деталям из предоставленной вами ссылки, похоже, что управляемые Yarn модули Node не были корректно конвертированы в pnpm? Там говорится о ручном удалении папки ‘node_modules’. Однако это должно было быть исправлено при новом pull-запросе из git, верно?

Ниже приведена ошибка из шага 6.

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

Стоит отметить, что у меня нет системы macOS для тестирования этого. Однако я недавно обновил локальный экземпляр Discourse на системе Arch Linux. Ожидается, что способ обработки зависимостей JavaScript будет схожим на обеих системах.

Я не думаю, что это верно. Каталог node_modules не отслеживается git. Модули Node устанавливаются при запуске команды pnpm install.

Я не могу гарантировать, что это правильно, но если бы я столкнулся с этой ошибкой, я бы удалил, а затем переустановил зависимости с помощью:

rm -rf node_modules app/assets/javascripts/*/node_modules

pnpm install

Полагаю, что ember-tracked-storage-polyfill находится непосредственно в discourse/node_modules, но запуск полной команды, которую я привел выше, должен быть безопасным.

Также можно попробовать запустить pnpm install с подробным логированием, если возникают ошибки:

pnpm install --reporter=silent --loglevel=verbose

Я только что удалил и переустановил зависимости, и предоставленная команда сработала корректно. Она удаляет и устанавливает pnpm без ошибок.

Однако при запуске bin/ember-cli по-прежнему возникает та же ошибка.

Есть ли способ полностью удалить мою установку Discourse для разработки, выполнить чистую загрузку из Git и заново запустить установку?

Меня полностью устраивает потеря данных из моей среды разработки.

Вы можете выполнить команду rm -rf ~/discourse, чтобы полностью удалить исходный код Discourse. Затем следуйте руководству по установке, начиная с шага «Клонирование Discourse»: Install Discourse on macOS for development.

2 лайка

Вот и всё!

Спасибо за терпение, Саймон. Ценю, что ты не сдался :slight_smile:

2 лайка

Отлично! Похоже, проблема была связана с закэшированными ресурсами, которые ранее были скомпилированы в директории /discourse/tmp/cache/assets/sprockets/. Возможно, проблему можно было решить, выполнив:

rm -rf ~/discourse/tmp/cache/

Это, впрочем, лишь предположение.

3 лайка

У меня не очень получается следовать этим инструкциям. Они не создают рабочую среду: при попытке установить что-либо (плагин, тему, компонент темы) я получаю ошибку 500. Похоже, мастер настройки работает некорректно. Я уже установил систему около 10 раз, а также удалял и переустанавливал зависимости. При запуске autospec я получаю множество сбоев, но почти никакой информации о них. Буду рад любым идеям о том, как заставить это работать полноценно.

Спасибо!

Для тех, кто начал с README по разработке Discourse и попал сюда: если вы настраиваете зависимости впервые, рекомендую PostgreSQL 14+, хотя в README указано PostgreSQL 13.

Почему? При настройке базы данных и запуске миграций процесс завершится ошибкой при попытке доступа к расширению pgvector в одной из миграций. Установка pgvector для PostgreSQL 13 — это довольно хлопотно. А если установить PostgreSQL 14, а затем pgvector, всё заработает без проблем.

Рекомендую использовать Homebrew для обоих:

brew install postgresql@14
brew install pgvector

Также! При первом запуске сервера Rails вы получите ошибку, если у вас не установлен ImageMagick. (Я знаю, что в начале этого руководства он указан как опциональный)

Надеюсь, это поможет… кому-нибудь!

3 лайка

В продакшене уже используется версия 15, поэтому рекомендую её или 16.

2 лайка