Install Discourse for development using Docker

Спасибо за отчет @Aubrey, @topological и @FlyingCat. Мы уже отменили этот коммит в ядре Discourse.

@cvx определил причину проблемы и создал задачу в репозитории upstream-библиотеки mail:

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

6 лайков

При запуске d/boot_dev --init у меня возникает другая ошибка. Это на чистой установке Ubuntu 22.04 с соблюдением руководства из первого сообщения темы.

РЕДАКТИРОВАНИЕ: Решено — система действительно не любит запуск от root. Убедитесь, что вы работаете от обычного пользователя с самого начала.

# d/boot_dev --init
Using source in: /root/dev/discourse
Using data in:   /root/dev/discourse/data/postgres
release: Pulling from discourse/discourse_dev
214ca5fb9032: Pull complete 
37cd9d4cd9e6: Pull complete 
9b38588fc778: Pull complete 
cb13139046fe: Pull complete 
1243de3fe752: Pull complete 
ec3e5331f9b3: Pull complete 
0fab0821518d: Pull complete 
9b5e686bba91: Pull complete 
428573951790: Pull complete 
38013f421bac: Pull complete 
733b166992df: Pull complete 
1fb3d7e57e63: Pull complete 
f76a1270a527: Pull complete 
133993b18ebe: Pull complete 
226b3b82cab1: Pull complete 
Digest: sha256:0a08c79cd8997e3bfac037625f2f5b2f26a64564113116b8c18969484b00a8ce
Status: Downloaded newer image for discourse/discourse_dev:release
docker.io/discourse/discourse_dev:release
439f53088cc4aab844a8864b779056a576c731ba4723d4cf8b23d0e97c8ae79c
Installing gems...
^TFollowing files may not be writable, so sudo is needed:
  /usr/local/bin
  /usr/local/lib/ruby/gems/2.7.0
  /usr/local/lib/ruby/gems/2.7.0/build_info
  /usr/local/lib/ruby/gems/2.7.0/cache
  /usr/local/lib/ruby/gems/2.7.0/doc
  /usr/local/lib/ruby/gems/2.7.0/extensions
  /usr/local/lib/ruby/gems/2.7.0/gems
  /usr/local/lib/ruby/gems/2.7.0/plugins
  /usr/local/lib/ruby/gems/2.7.0/specifications
Using rake 13.0.6
Using concurrent-ruby 1.1.10
Using i18n 1.10.0
Using minitest 5.15.0
Using tzinfo 2.0.4
Using activesupport 7.0.3
Using builder 3.2.4
Using erubi 1.10.0
Using racc 1.6.0
Using nokogiri 1.13.6 (x86_64-linux)
Using rails-dom-testing 2.0.3
Using crass 1.0.6
Using loofah 2.18.0
Using rails-html-sanitizer 1.4.2
Using actionview 7.0.3
Using rack 2.2.3
Using rack-test 1.1.0
Using actionpack 7.0.3
Using globalid 1.0.0
Using activejob 7.0.3
Using mini_mime 1.1.2
Using mail 2.8.0.edge from https://github.com/discourse/mail.git
Using digest 3.1.0
Using timeout 0.2.0
Using net-protocol 0.1.3
Using strscan 3.0.3
Using net-imap 0.2.3
Using net-pop 0.1.1
Using net-smtp 0.3.1
Using actionmailer 7.0.3
Using actionview_precompiler 0.2.3
Using activemodel 7.0.3
Using active_model_serializers 0.8.4
Using activerecord 7.0.3
Using public_suffix 4.0.7
Using addressable 2.8.0
Using annotate 3.2.0
Using ast 2.4.2
Using aws-eventstream 1.2.0
Using aws-partitions 1.583.0
Using aws-sigv4 1.5.0
Using jmespath 1.6.1
Using aws-sdk-core 3.130.2
Using aws-sdk-kms 1.56.0
Using aws-sdk-s3 1.114.0
Using aws-sdk-sns 1.53.0
Using ember-source 2.18.2
Using execjs 2.8.1
Using barber 0.12.2
Using coderay 1.1.3
Using better_errors 2.9.1
Using debug_inspector 1.1.0
Using binding_of_caller 1.0.0
Using msgpack 1.5.1
Using bootsnap 1.11.1
Using uniform_notifier 1.16.0
Using bullet 7.0.1
Using bundler 2.3.13
Using byebug 11.1.3
Using cbor 0.5.9.6
Using certified 1.0.0
Using chunky_png 1.4.0
Using colored2 3.1.2
Using connection_pool 2.2.5
Using ipaddr 1.2.4
Using openssl 2.2.1
Using openssl-signature_algorithm 1.1.1
Using cose 1.2.0
Using cppjieba_rb 0.4.2
Using rexml 3.2.5
Using crack 0.4.5
Using css_parser 1.11.0
Using diff-lcs 1.5.0
Using diffy 3.4.0
Using ember-data-source 3.0.2
Using sprockets 3.7.2
Using ember-handlebars-template 0.8.0
Using method_source 1.0.0
Using thor 1.2.1
Using zeitwerk 2.5.4
Using railties 7.0.3
Using jquery-rails 4.4.0
Using discourse-ember-rails 0.18.6
Using discourse-ember-source 3.12.2.3
Using discourse-fonts 0.0.9
Using faker 2.21.0
Using literate_randomizer 0.4.0
Using discourse_dev_assets 0.0.4
Using docile 1.4.0
Using regexp_parser 2.4.0
Using ecma-re-validator 0.4.0
Using email_reply_trimmer 0.1.13
Using excon 0.92.3
Using exifr 1.3.9
Using fabrication 2.28.0
Using fakeweb 1.3.0
Using faraday-em_http 1.0.0
Using faraday-em_synchrony 1.0.0
Using faraday-excon 1.1.0
Using faraday-httpclient 1.0.1
Using multipart-post 2.1.1
Using faraday-multipart 1.0.3
Using faraday-net_http 1.0.1
Using faraday-net_http_persistent 1.2.0
Using faraday-patron 1.0.0
Using faraday-rack 1.0.0
Using faraday-retry 1.0.3
Using ruby2_keywords 0.0.5
Using faraday 1.10.0
Using fast_blank 1.0.1
Using fast_xs 0.8.0
Using fastimage 2.2.6
Using ffi 1.15.5
Using fspath 3.1.2
Using gc_tracer 1.5.1
Using guess_html_encoding 0.0.11
Using hana 1.3.7
Using hashdiff 1.0.1
Using hashie 5.0.0
Using highline 2.0.3
Using hkdf 0.3.0
Using htmlentities 4.3.4
Using http_accept_language 2.1.1
Using image_size 3.0.1
Using in_threads 1.6.0
Using progress 3.6.0
Using image_optim 0.31.1
Using json 2.6.1
Using json-schema 2.8.1
Using uri_template 0.7.0
Using json_schemer 0.2.21
Using jwt 2.3.0
Using kgio 2.11.4
Using libv8-node 16.10.0.0 (x86_64-linux)
Using rb-fsevent 0.11.1
Using rb-inotify 0.10.1
Using listen 3.7.1
Using request_store 1.5.1
Using lograge 0.12.0
Using logstash-event 1.2.02
Using logstash-logger 0.26.1
Using logster 2.11.2
Using lru_redux 1.1.0
Using lz4-ruby 0.3.3
Using maxminddb 0.1.22
Using memory_profiler 1.0.0
Using message_bus 4.2.0
Using mini_racer 0.6.2
Using redis 4.5.1
Using sidekiq 6.4.2
Using mini_scheduler 0.13.0
Using mini_sql 1.4.0
Using mini_suffix 0.3.3
Using mocha 1.14.0
Using multi_json 1.15.0
Using multi_xml 0.6.0
Using mustache 1.1.1
Using uri 0.11.0
Using net-http 0.2.2
Using nio4r 2.5.8
Using oauth 0.5.10
Using oauth2 1.4.7
Using oj 3.13.11
Using omniauth 1.9.1
Using omniauth-oauth2 1.7.2
Using omniauth-facebook 9.0.0
Using omniauth-github 1.4.0
Using omniauth-google-oauth2 0.8.2
Using omniauth-oauth 1.2.0
Using omniauth-twitter 1.4.0
Using optimist 3.0.1
Using parallel 1.22.1
Using parallel_tests 3.8.1
Using parser 3.1.2.0
Using pg 1.3.5
Using pry 0.13.1
Using pry-byebug 3.9.0
Using pry-rails 0.3.9
Using puma 5.6.4
Using r2 0.2.7
Using rack-mini-profiler 3.0.0
Using rack-protection 2.2.0
Using rails_failover 0.8.1
Using rails_multisite 4.0.1
Using rainbow 3.1.1
Using raindrops 0.20.0
Using rbtrace 0.4.14
Using rchardet 1.8.0
Using redis-namespace 1.8.2
Using rinku 2.0.6
Using rotp 6.2.0
Using rqrcode_core 1.2.0
Using rqrcode 2.1.1
Using rspec-support 3.11.0
Using rspec-core 3.11.0
Using rspec-expectations 3.11.0
Using rspec-mocks 3.11.1
Using rspec 3.11.0
Using rspec-html-matchers 0.9.4
Using rspec-rails 5.1.2
Using rss 0.2.9
Using rswag-specs 2.5.1
Using rubocop-ast 1.18.0
Using ruby-progressbar 1.11.0
Using unicode-display_width 2.1.0
Using rubocop 1.29.1
Using rubocop-rspec 2.10.0
Using rubocop-discourse 2.5.0
Using ruby-prof 1.4.3
Using ruby-readability 0.7.0
Using rubyzip 2.3.2
Using sanitize 6.0.0
Using sassc 2.0.1
Using sprockets-rails 3.4.2
Using tilt 2.0.10
Using sassc-rails 2.1.2
Using seed-fu 2.3.9
Using shoulda-matchers 5.1.0
Using simplecov-html 0.12.3
Using simplecov_json_formatter 0.1.4
Using simplecov 0.21.2
Using sshkey 2.0.0
Using stackprof 0.2.19
Using test-prof 1.0.9
Using uglifier 4.2.0
Using unf_ext 0.0.8.1
Using unf 0.1.4
Using unicorn 6.1.0
Using webmock 3.14.0
Using webpush 1.1.0
Using xorcist 1.1.2
Using yaml-lint 0.0.10
Bundle complete! 126 Gemfile dependencies, 232 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
1 installed gem you directly depend on is looking for funding.
  Run `bundle fund` for details
Migrating database...
rake aborted!
Errno::EACCES: Permission denied @ dir_s_mkdir - /src/app/assets/javascripts/plugins
/src/lib/plugin/instance.rb:449:in `ensure_directory'
/src/lib/plugin/instance.rb:721:in `activate!'
/src/lib/discourse.rb:279:in `block in activate_plugins!'
/src/lib/discourse.rb:276:in `each'
/src/lib/discourse.rb:276:in `activate_plugins!'
/src/config/application.rb:222:in `block in <class:Application>'
/src/lib/plugin.rb:6:in `initialization_guard'
/src/config/application.rb:221:in `<class:Application>'
/src/config/application.rb:81:in `<module:Discourse>'
/src/config/application.rb:80:in `<main>'
/src/Rakefile:7:in `<main>'
(See full trace by running task with --trace)
# d/rails s
Traceback (most recent call last):
	8: from /src/bin/unicorn:70:in `<main>'
	7: from /src/bin/unicorn:38:in `ensure_cache_clean!'
	6: from /usr/local/lib/ruby/2.7.0/fileutils.rb:211:in `mkdir_p'
	5: from /usr/local/lib/ruby/2.7.0/fileutils.rb:211:in `each'
	4: from /usr/local/lib/ruby/2.7.0/fileutils.rb:226:in `block in mkdir_p'
	3: from /usr/local/lib/ruby/2.7.0/fileutils.rb:226:in `reverse_each'
	2: from /usr/local/lib/ruby/2.7.0/fileutils.rb:228:in `block (2 levels) in mkdir_p'
	1: from /usr/local/lib/ruby/2.7.0/fileutils.rb:250:in `fu_mkdir'
/usr/local/lib/ruby/2.7.0/fileutils.rb:250:in `mkdir': Permission denied @ dir_s_mkdir - /src/tmp (Errno::EACCES)
1 лайк


Как мне отключить CORS для разработки?
Я хочу отправлять запросы CORS с источника http://localhost:3001, но настройка cors_origin не работает. Заголовок Access-Control-Allow-Origin не появляется.

Неважно. Я решил проблему. Похоже, что настройка enable_cors игнорируется в режиме разработки.

Таким образом, промежуточное ПО CORS никогда не устанавливается. Я просто удалил условный оператор в своем локальном репозитории Discourse, чтобы промежуточное ПО устанавливалось в любом случае.

Возможно, разработчик (или автор этого руководства @rishabh, может быть?) сможет мне помочь. Я следовал руководству OP буквально, на новой установке VM с Ubuntu 22.04, используя обычный (не root) аккаунт.

  • При создании символической ссылки на плагин в подпапке discourse/plugins/, изменения в JS-коде инициализатора плагина не видны, если я не выполню d/shutdown_dev; d/boot_dev, несмотря на перезапуск d/rails s и d/ember-cli.

  • При копировании плагина в подпапку discourse/plugins/, изменения в JS-коде инициализатора плагина видны без выполнения d/shutdown_dev; d/boot_dev, но только после перезапуска d/rails s и d/ember-cli.

Речь идет о плагине discourse-math, а код, который я изменяю, находится в assets/initializers/javascript/*.js. Я заметил, что эти файлы подгружаются динамически и не вызываются браузером напрямую через HTTP GET (не уверен, имеет ли это значение).

P.S. Я новичок только в Discourse, но не в веб-разработке/JS (то есть, не нужно спрашивать меня, обновил ли я страницу браузера :slight_smile:).

Может ли разработчик, пожалуйста, проверить эту ошибку? Похоже, она связана с Ruby, а не с чем-то специфичным для моей ситуации. Я устанавливал Discourse для разработки на Windows, следуя этим инструкциям по установке через Docker, что я успешно делал несколько раз. Скрипт дошёл до этапа установки базы данных и прервался. Первое предупреждение не выглядит фатальным, но ниже в этом дампе упоминается отсутствующий файл xss.min.js, что стало фатальной ошибкой:

‘’'Вы пытаетесь запустить миграции в тестовой среде, при этом плагины не загружаются; установите LOAD_PLUGINS=1.

ПРЕДУПРЕЖДЕНИЕ ОБ УСТАРЕВАНИИ: Использование устаревшей обработки соединений устарело. Пожалуйста, установите
legacy_connection_handling в значение false в вашем приложении.

Новая обработка соединений не поддерживает геттер и сеттер
connection_handlers.

Подробнее о том, как выполнить миграцию, читайте здесь: Multiple Databases with Active Record — Ruby on Rails Guides
(вызвано из в /src/config/environment.rb:7)
== 20150501152228 RenameTotalVotesToVoters: миграция =========================
== 20150501152228 RenameTotalVotesToVoters: выполнена (0.0106с) ================

== 20151016163051 MergePollsVotes: миграция ==================================
== 20151016163051 MergePollsVotes: выполнена (0.0017с) =========================

== 20160321164925 ClosePollsInClosedTopics: миграция =========================
== 20160321164925 ClosePollsInClosedTopics: выполнена (0.0281с) ================

== 20180820073549 CreatePollsTables: миграция ================================
– create_table(:polls, {})
→ 0.0067с
– add_index(:polls, [:post_id, :name], {:unique=>true})
→ 0.0008с
– create_table(:poll_options, {})
→ 0.0039с
– add_index(:poll_options, [:poll_id, :digest], {:unique=>true})
→ 0.0009с
– create_table(:poll_votes, {:id=>false})
→ 0.0044с
– add_index(:poll_votes, [:poll_id, :poll_option_id, :user_id], {:unique=>true})
→ 0.0006с
== 20180820073549 CreatePollsTables: выполнена (0.0188с) =======================

== 20180820080623 MigratePollsData: миграция =================================
– execute(“INSERT INTO post_custom_fields (name, value, post_id, created_at, updated_at)\nSELECT ‘has_polls’, ‘t’, post_id, MIN(created_at), MIN(updated_at)\n FROM polls\n GROUP BY post_id\n”)
→ 0.0008с
== 20180820080623 MigratePollsData: выполнена (0.0033с) ========================

== 20191114160613 AddGraphToPolls: миграция ==================================
– add_column(:polls, :chart_type, :integer, {:default=>0, :null=>false})
→ 0.0012с
== 20191114160613 AddGraphToPolls: выполнена (0.0020с) =========================

== 20191206123012 AddGroupNameToPolls: миграция ==============================
– add_column(:polls, :groups, :string, {})
→ 0.0005с
== 20191206123012 AddGroupNameToPolls: выполнена (0.0012с) =====================

== 20200520015508 ClearLastGravatarDownloadAttemptOnUserAvatars: миграция ====
– execute(“UPDATE user_avatars\nSET last_gravatar_download_attempt = null\nWHERE user_id = -2 AND custom_upload_id IS NULL AND gravatar_upload_id IS NULL\n”)
→ 0.0006с
== 20200520015508 ClearLastGravatarDownloadAttemptOnUserAvatars: выполнена (0.0014с)

== 20200804144550 AddTitleToPolls: миграция ==================================
– add_column(:polls, :title, :string, {})
→ 0.0005с
== 20200804144550 AddTitleToPolls: выполнена (0.0011с) =========================

rake aborted!
Errno::ENOENT: Нет такого файла или каталога @ rb_sysopen - /src/app/assets/javascripts/node_modules/xss/dist/xss.min.js
/src/lib/pretty_text.rb:613:in block in ctx_load' /src/lib/pretty_text.rb:612:in each’
/src/lib/pretty_text.rb:612:in ctx_load' /src/lib/pretty_text.rb:108:in create_es6_context’
/src/lib/pretty_text.rb:153:in block in v8' /src/lib/pretty_text.rb:151:in synchronize’
/src/lib/pretty_text.rb:151:in v8' /src/lib/pretty_text.rb:190:in block in markdown’
/src/lib/pretty_text.rb:606:in block in protect' /src/lib/pretty_text.rb:605:in synchronize’
/src/lib/pretty_text.rb:605:in protect' /src/lib/pretty_text.rb:189:in markdown’
/src/lib/pretty_text.rb:318:in cook' /src/app/models/user_profile.rb:149:in cooked’
/src/app/models/user_profile.rb:158:in cook' (eval):51:in block (2 levels) in run_file’
/src/lib/tasks/db.rake:234:in block (2 levels) in <main>' /src/lib/distributed_mutex.rb:57:in block in synchronize’
/src/lib/distributed_mutex.rb:53:in synchronize' /src/lib/distributed_mutex.rb:53:in synchronize’
/src/lib/distributed_mutex.rb:38:in synchronize' /src/lib/tasks/db.rake:214:in block in ’
Задачи: TOP => db:migrate
(Полный трассировочный вывод можно получить, запустив задачу с флагом --trace)‘’’

3 лайка

Большое спасибо за этот отличный ресурс. Несколько советов для помощи:

  1. Вот команда для полного удаления и перезапуска данных:
    docker stop discourse_dev ; docker rm discourse_dev ; sudo rm -rf data ; rm -rf tmp/*

  2. Если у вас возникают проблемы с миграцией, как указано выше, убедитесь, что у вас есть правильные права доступа. Вы должны быть частью группы docker или использовать sudo (второй вариант не рекомендуется).

  3. Дождитесь завершения d/rails s, прежде чем запускать d/ember-cli, иначе могут возникнуть странные проблемы.

1 лайк

Спасибо за это, Тарек.

После полной переустановки и повторения процесса клонирования та же самая ошибка возникла при инициализации, а именно:
"rake aborted!
“Errno::ENOENT: No such file or directory @ rb_sysopen”

Однако в этот раз мне удалось успешно продолжить и дойти до сообщения «Поздравляем». Спасибо.

Теперь, поскольку скрипт завершился досрочно, нет адреса электронной почты администратора и нет файла конфигурации. Было бы здорово, если бы кто-то разобрался с проблемой инициализации.

Я настроил адрес электронной почты администратора, используя команду “d/rake admin:create”, и ввёл действительный адрес электронной почты и пароль (минимум 10 символов).

После этого мне удалось успешно запустить Discourse в браузере, как и было указано в инструкции.

2 лайка

Кто-нибудь здесь использует Fedora? Это добавляет немного сложности, потому что для повышения безопасности используются Podman и SELinux. Надеюсь, Podman не станет большой проблемой: он совместим с OCI, и при установке podman-docker все команды Docker автоматически переводятся в команды Podman. Что касается SELinux, я, кажется, тоже нашёл правильное решение, но всё равно сталкиваюсь с ошибкой.

Итак, находясь в директории discourse, я выполняю следующую команду: mkdir -vp data/postgres; sudo semanage fcontext -a -t svirt_sandbox_file_t "/home/user/discourse/data(/.*)?" && restorecon -rv ., чтобы применить метку контекста SELinux, которая, как мне кажется, должна быть достаточной для этого (по крайней мере, ошибки SELinux исчезли).

Но затем я всё равно получаю эту ошибку:

[user@fedora discourse]$ d/boot_dev --init
Эмуляция CLI Docker с использованием podman. Создайте /etc/containers/nodocker, чтобы скрыть сообщение.
Ошибка: шаблон: info:1:2: при выполнении "info" в <.Architecture>: невозможно оценить поле Architecture в типе *define.Info
ПРЕДУПРЕЖДЕНИЕ: Архитектура Docker не x86_64.
Вероятно, разработка Discourse не будет работать при эмуляции архитектуры Docker.
Попробуйте выполнить нативную установку для разработки.
Используется исходный код в: /home/user/discourse
Используемые данные в:   /home/user/discourse/data/postgres
Эмуляция CLI Docker с использованием podman. Создайте /etc/containers/nodocker, чтобы скрыть сообщение.
✔ docker.io/discourse/discourse_dev:release
Попытка получения образа docker.io/discourse/discourse_dev:release...
Получение подписей источника образа
Копирование бинарного файла b42e9bacf67a завершено
Копирование бинарного файла 3257b89dc3e0 завершено
Копирование бинарного файла 8f87c7014fb0 завершено
Копирование бинарного файла bf00c24d0f5b завершено
Копирование бинарного файла 10e0cd28eb63 завершено
Копирование бинарного файла 1efc276f4ff9 завершено
Копирование бинарного файла 6d9350d0e59c завершено
Копирование бинарного файла 84ee3423e706 завершено
Копирование бинарного файла ee2701209d47 завершено
Копирование бинарного файла ce48a2c1c5d3 завершено
Копирование бинарного файла 2f702c3c2f9f завершено
Копирование бинарного файла 27762615d0fc завершено
Копирование бинарного файла 7056a5796a1a завершено
Копирование бинарного файла c8a22dd30e4c завершено
Копирование бинарного файла 1a93cd2f0c23 завершено
Копирование конфигурации 6365e737b9 завершено
Запись манифеста в место назначения образа
Сохранение подписей
6365e737b90aea36af1fd9ed029db43a0a620f1c285416546f5e6ee728aca4c5
Эмуляция CLI Docker с использованием podman. Создайте /etc/containers/nodocker, чтобы скрыть сообщение.
5282393e248e33800e235b4405c9a7197d10a3fc1d405450f1c99d2a5c7c85c7
Установка gem-пакетов...
Эмуляция CLI Docker с использованием podman. Создайте /etc/containers/nodocker, чтобы скрыть сообщение.
Не удалось найти файл Gemfile

В журнале systemd сообщается следующее:

Aug 09 18:47:45 fedora podman[19380]: 2022-08-09 18:47:45.841001786 +0200 CEST m=+0.137712533 image pull  discourse/discourse_dev:release
Aug 09 18:47:45 fedora podman[19380]: 
Aug 09 18:47:46 fedora podman[19380]: 2022-08-09 18:47:46.043506861 +0200 CEST m=+0.340217585 container create 5282393e248e33800e235b4405c9a7197d10a3fc1d405450f1c99d2a5c7c85c7 (image=docker.io/discourse/discourse_dev:release, name=discourse_dev)
Aug 09 18:47:46 fedora kernel: tun: Универсальный драйвер устройств TUN/TAP, версия 1.6
Aug 09 18:47:46 fedora systemd[1684]: selinux: avc:  op=load_policy lsm=selinux seqno=7 res=1
Aug 09 18:47:46 fedora systemd[1684]: selinux: Несоответствие версии регулярных выражений, ожидалось: 10.39 2021-10-29, фактически: 10.40 2022-04-14
Aug 09 18:47:46 fedora systemd[1684]: selinux: Несоответствие версии регулярных выражений, ожидалось: 10.39 2021-10-29, фактически: 10.40 2022-04-14
Aug 09 18:47:46 fedora systemd[1684]: selinux: Несоответствие версии регулярных выражений, ожидалось: 10.39 2021-10-29, фактически: 10.40 2022-04-14
Aug 09 18:47:46 fedora systemd[1684]: Запущен libpod-conmon-5282393e248e33800e235b4405c9a7197d10a3fc1d405450f1c99d2a5c7c85c7.scope.
Aug 09 18:47:46 fedora systemd[1684]: Запущен libpod-5282393e248e33800e235b4405c9a7197d10a3fc1d405450f1c99d2a5c7c85c7.scope - контейнер libcrun.
Aug 09 18:47:46 fedora chronyd[792]: Выбран источник 158.101.221.122 (2.fedora.pool.ntp.org)
Aug 09 18:47:46 fedora podman[19380]: 2022-08-09 18:47:46.370028125 +0200 CEST m=+0.666738859 container init 5282393e248e33800e235b4405c9a7197d10a3fc1d405450f1c99d2a5c7c85c7 (image=docker.io/discourse/discourse_dev:release, name=discourse_dev)
Aug 09 18:47:46 fedora podman[19380]: 2022-08-09 18:47:46.433863112 +0200 CEST m=+0.730573845 container start 5282393e248e33800e235b4405c9a7197d10a3fc1d405450f1c99d2a5c7c85c7 (image=docker.io/discourse/discourse_dev:release, name=discourse_dev)
Aug 09 18:47:46 fedora discourse_dev[19420]: run-parts: выполнение /etc/runit/1.d/00-fix-var-logs
Aug 09 18:47:46 fedora discourse_dev[19420]: run-parts: выполнение /etc/runit/1.d/anacron
Aug 09 18:47:46 fedora discourse_dev[19420]: run-parts: выполнение /etc/runit/1.d/cleanup-pids
Aug 09 18:47:46 fedora discourse_dev[19420]: Очистка устаревших PID-файлов
Aug 09 18:47:46 fedora discourse_dev[19420]: run-parts: выполнение /etc/runit/1.d/ensure-database
Aug 09 18:47:47 fedora podman[19425]: 2022-08-09 18:47:47.698175757 +0200 CEST m=+1.211177315 container exec 5282393e248e33800e235b4405c9a7197d10a3fc1d405450f1c99d2a5c7c85c7 (image=docker.io/discourse/discourse_dev:release, name=discourse_dev)
Aug 09 18:47:48 fedora discourse_dev[19420]: Запущен runsvdir, PID равен 29
Aug 09 18:47:48 fedora podman[19425]: 2022-08-09 18:47:48.535303673 +0200 CEST m=+2.048305123 container exec_died 5282393e248e33800e235b4405c9a7197d10a3fc1d405450f1c99d2a5c7c85c7 (image=docker.io/discourse/discourse_dev:release, name=discourse_dev, execID=166d86f7ca8739899bd59801c2f8bb3d9b940329d8e6bb29d0f45ad82e9d60b0)

Директория логов в директории discourse пуста. Как я мог бы лучше провести диагностику этой проблемы?

Кажется, пути настроены правильно для поиска файла Gemfile.

[user@fedora discourse]$ SCRIPTPATH=$(cd "$(dirname "$0")" > /dev/null; pwd -P)
[user@fedora discourse]$ echo $SCRIPTPATH 
/home/user/discourse

Когда-то давно у меня получилось создать виртуальную среду разработки на Fedora с нуля, но настроить рабочую среду не удалось. Я также задал вопрос в сообществе Podman, и кто-то любезно ответил, что это возможно, но потребуется внести множество изменений, на которые у него не хватило времени…

Мне бы очень хотелось запустить как среду разработки, так и рабочую среду на Fedora…

2 лайка

Я не понимаю этот вопрос. Процесс прерывается с сообщением об ошибке:

rake aborted!
Errno::ENOENT: No such file or directory @ rb_sysopen - /src/app/assets/javascripts/node_modules/xss/dist/xss.min.js
/src/lib/pretty_text.rb:613:in `block in ctx_load'
/src/lib/pretty_text.rb:612:in `each'
/src/lib/pretty_text.rb:612:in `ctx_load'
/src/lib/pretty_text.rb:108:in `create_es6_context'
/src/lib/pretty_text.rb:153:in `block in v8'
/src/lib/pretty_text.rb:151:in `synchronize'
/src/lib/pretty_text.rb:151:in `v8'
/src/lib/pretty_text.rb:190:in `block in markdown'
/src/lib/pretty_text.rb:606:in `block in protect'
/src/lib/pretty_text.rb:605:in `synchronize'
/src/lib/pretty_text.rb:605:in `protect'
/src/lib/pretty_text.rb:189:in `markdown'
/src/lib/pretty_text.rb:318:in `cook'
/src/app/models/user_profile.rb:149:in `cooked'
/src/app/models/user_profile.rb:158:in `cook'
(eval):51:in `block (2 levels) in run_file'
/src/lib/tasks/db.rake:234:in `block (2 levels) in <main>'
/src/lib/distributed_mutex.rb:57:in `block in synchronize'
/src/lib/distributed_mutex.rb:53:in `synchronize'
/src/lib/distributed_mutex.rb:53:in `synchronize'
/src/lib/distributed_mutex.rb:38:in `synchronize'
/src/lib/tasks/db.rake:214:in `block in <main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)

Я хотел бы использовать Ubuntu, но по какой-то причине она плохо работает с spice-vdagent: множество графических ошибок при запуске виртуальной машины. Fedora работает безупречно… Я думал, что контейнеры решают проблему переносимости :stuck_out_tongue: Похоже, мне придется настроить Ubuntu без графического интерфейса и подключаться через SSH.


Та же ошибка возникает и в Ubuntu Server 22.04

У меня та же проблема. Я последовал рекомендациям от @tarek и ещё раз их проверил, но проблема сохраняется. Также я полностью очистил директорию Discourse и начал заново. Использую Ubuntu 22.04.01 в виртуальной машине и последнюю версию Docker для Ubuntu.

1 лайк

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

d/rake db:migrate
d/rake admin:create
d/rails s

а также в следующих двух терминалах: d/ember-cli и d/mailhog.

4 лайка

Есть идеи, как отключить вывод всех запросов при выполнении d/rails s? Из-за этого мне гораздо сложнее использовать byebug и подобные инструменты для поиска багов.

2 лайка

Попробуйте: DISCOURSE_DEV_LOG_LEVEL=info bin/rails s

Больше советов здесь: https://discourse.pluginmanager.org/t/debugging-ruby-with-byebug/378?u=merefield

7 лайков

Здравствуйте,

Я пытаюсь запустить это на Ubuntu в стабильной версии (v2.8.8), но получаю следующие ошибки:

Миграция базы данных...
== 20220104053343 AddBookmarkPolymorphicColumns: миграция ====================
-- add_column(:bookmarks, :bookmarkable_id, :integer)
rake aborted!
StandardError: Произошла ошибка, эта и все последующие миграции отменены:

PG::DuplicateColumn: ОШИБКА: столбец "bookmarkable_id" отношения "bookmarks" уже существует
/src/lib/migration/safe_migrate.rb:92:in `async_exec'
/src/db/migrate/20220104053343_add_bookmark_polymorphic_columns.rb:5:in `change'
/src/lib/freedom_patches/schema_migration_details.rb:9:in `block in exec_migration'
/src/lib/freedom_patches/schema_migration_details.rb:8:in `exec_migration'
/src/lib/migration/safe_migrate.rb:28:in `migrate'
/src/lib/migration/safe_migrate.rb:55:in `migrate'
/src/lib/tasks/db.rake:218:in `block (2 levels) in <main>'
/src/lib/distributed_mutex.rb:33:in `block in synchronize'
/src/lib/distributed_mutex.rb:29:in `synchronize'
/src/lib/distributed_mutex.rb:29:in `synchronize'
/src/lib/distributed_mutex.rb:14:in `synchronize'
/src/lib/tasks/db.rake:210:in `block in <main>'

Вызвано:
ActiveRecord::StatementInvalid: PG::DuplicateColumn: ОШИБКА: столбец "bookmarkable_id" отношения "bookmarks" уже существует
/src/lib/migration/safe_migrate.rb:92:in `async_exec'
/src/db/migrate/20220104053343_add_bookmark_polymorphic_columns.rb:5:in `change'
/src/lib/freedom_patches/schema_migration_details.rb:9:in `block in exec_migration'
/src/lib/freedom_patches/schema_migration_details.rb:8:in `exec_migration'
/src/lib/migration/safe_migrate.rb:28:in `migrate'
/src/lib/migration/safe_migrate.rb:55:in `migrate'
/src/lib/tasks/db.rake:218:in `block (2 levels) in <main>'
/src/lib/distributed_mutex.rb:33:in `block in synchronize'
/src/lib/distributed_mutex.rb:29:in `synchronize'
/src/lib/distributed_mutex.rb:29:in `synchronize'
/src/lib/distributed_mutex.rb:14:in `synchronize'
/src/lib/tasks/db.rake:210:in `block in <main>'

Вызвано:
PG::DuplicateColumn: ОШИБКА: столбец "bookmarkable_id" отношения "bookmarks" уже существует
/src/lib/migration/safe_migrate.rb:92:in `async_exec'
/src/db/migrate/20220104053343_add_bookmark_polymorphic_columns.rb:5:in `change'
/src/lib/freedom_patches/schema_migration_details.rb:9:in `block in exec_migration'
/src/lib/freedom_patches/schema_migration_details.rb:8:in `exec_migration'
/src/lib/migration/safe_migrate.rb:28:in `migrate'
/src/lib/migration/safe_migrate.rb:55:in `migrate'
/src/lib/tasks/db.rake:218:in `block (2 levels) in <main>'
/src/lib/distributed_mutex.rb:33:in `block in synchronize'
/src/lib/distributed_mutex.rb:29:in `synchronize'
/src/lib/distributed_mutex.rb:29:in `synchronize'
/src/lib/distributed_mutex.rb:14:in `synchronize'
/src/lib/tasks/db.rake:210:in `block in <main>'
Задачи: TOP => db:migrate
(Полный трассировочный вывод можно получить, запустив задачу с флагом --trace)

Я пробовал выполнить:

d/rake db:migrate RAILS_ENV=development

Но получаю ту же ошибку. Кто-нибудь уже сталкивался с этим?

Кажется, вы используете ту же базу данных, что и раньше, поэтому она уже была перенесена?

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

discourse@discourse:/src$ sudo su postgres -c 'psql discourse -c "drop database discourse_test"'
DROP DATABASE
discourse@discourse:/src$ sudo su postgres -c 'psql discourse -c "create database discourse_test"'
CREATE DATABASE
discourse@discourse:/src$ sudo su postgres -c 'psql -c "grant all privileges on database discourse_test to discourse;"'
GRANT
discourse@discourse:/src$ RAILS_ENV=test rake db:migrate

Здесь что-то не так?

Кажется, что эта миграция может быть проблемной?:

== 20220104053343 AddBookmarkPolymorphicColumns: migrating ====================
-- add_column(:bookmarks, :bookmarkable_id, :integer)
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

PG::DuplicateColumn: ERROR:  column "bookmarkable_id" of relation "bookmarks" already exist

что странно (?), потому что:

discourse_test=> \d bookmarks
                                                Table "public.bookmarks"
         Column         |              Type              | Collation | Nullable |                Default
------------------------+--------------------------------+-----------+----------+---------------------------------------
 id                     | bigint                         |           | not null | nextval('bookmarks_id_seq'::regclass)
 user_id                | bigint                         |           | not null |
 post_id                | bigint                         |           | not null |
 name                   | character varying(100)         |           |          |
 reminder_at            | timestamp without time zone    |           |          |
 created_at             | timestamp(6) without time zone |           | not null |
 updated_at             | timestamp(6) without time zone |           | not null |
 reminder_last_sent_at  | timestamp without time zone    |           |          |
 reminder_set_at        | timestamp without time zone    |           |          |
 auto_delete_preference | integer                        |           | not null | 0
 pinned                 | boolean                        |           |          | false
 for_topic              | boolean                        |           | not null | false
Indexes:
    "bookmarks_pkey" PRIMARY KEY, btree (id)
    "index_bookmarks_on_post_id" btree (post_id)
    "index_bookmarks_on_reminder_at" btree (reminder_at)
    "index_bookmarks_on_reminder_set_at" btree (reminder_set_at)
    "index_bookmarks_on_user_id" btree (user_id)
    "index_bookmarks_on_user_id_and_post_id_and_for_topic" UNIQUE, btree (user_id, post_id, for_topic)

Похоже, это не затрагивает ветку tests-passed, только ветку stable?

Спасибо @RGJ, это может пролить свет на ситуацию:

cc: @pfaffman

1 лайк

Привет, @Robert,

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

Может кто-то подсказать, в каком направлении искать решение этой проблемы?
Это происходит, когда я пытаюсь запустить d/boot_dev --init

rake aborted!
ActiveRecord::ConnectionNotEstablished: connection to server at "127.0.0.1", port 5432 failed: Connection refused
        Is the server running on that host and accepting TCP/IP connections?
connection to server at "::1", port 5432 failed: Cannot assign requested address
        Is the server running on that host and accepting TCP/IP connections?
/src/config/initializers/006-ensure_login_hint.rb:8:in `block in <main>'
/src/config/environment.rb:7:in `<main>'

Caused by:
PG::ConnectionBad: connection to server at "127.0.0.1", port 5432 failed: Connection refused
        Is the server running on that host and accepting TCP/IP connections?
connection to server at "::1", port 5432 failed: Cannot assign requested address
        Is the server running on that host and accepting TCP/IP connections?
/src/config/initializers/006-ensure_login_hint.rb:8:in `block in <main>'
/src/config/environment.rb:7:in `<main>'
Tasks: TOP => db:migrate => db:load_config => environment
(See full trace by running task with --trace)

Заранее спасибо за любую помощь :smile:

1 лайк

При запуске d/boot_dev --init возникает следующая ошибка:

...
...
...
== 20221219082223 AddIndexToChatMessages: migrated (0.0138s) ==================

rake aborted!
Errno::ENOENT: No such file or directory @ rb_sysopen - /src/app/assets/javascripts//node_modules/loader.js/dist/loader/loader.js
/src/lib/pretty_text.rb:637:in `block in ctx_load'
/src/lib/pretty_text.rb:636:in `each'
/src/lib/pretty_text.rb:636:in `ctx_load'
/src/lib/pretty_text.rb:97:in `create_es6_context'
/src/lib/pretty_text.rb:144:in `block in v8'
/src/lib/pretty_text.rb:142:in `synchronize'
/src/lib/pretty_text.rb:142:in `v8'
/src/lib/pretty_text.rb:184:in `block in markdown'
/src/lib/pretty_text.rb:630:in `block in protect'
/src/lib/pretty_text.rb:629:in `synchronize'
/src/lib/pretty_text.rb:629:in `protect'
/src/lib/pretty_text.rb:183:in `markdown'
/src/lib/pretty_text.rb:328:in `cook'
/src/app/models/user_profile.rb:149:in `cooked'
/src/app/models/user_profile.rb:158:in `cook'
(eval):51:in `block (2 levels) in run_file'
/src/lib/tasks/db.rake:234:in `block (2 levels) in <main>'
/src/lib/distributed_mutex.rb:57:in `block in synchronize'
/src/lib/distributed_mutex.rb:53:in `synchronize'
/src/lib/distributed_mutex.rb:53:in `synchronize'
/src/lib/distributed_mutex.rb:38:in `synchronize'
/src/lib/tasks/db.rake:214:in `block in <main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)