Install Discourse for development using Docker

Obrigado pelo relatório @Aubrey @topological e @FlyingCat. Revertemos esse commit no Discourse core.

@cvx identificou a causa do problema e abriu uma issue na gem mail upstream:

Assim que isso for resolvido, voltaremos a usar a gem oficial.

6 curtidas

Estou recebendo um erro diferente em d/boot_dev --init. Isso ocorre em uma instalação nova do Ubuntu 22.04 e seguindo o guia no OP

EDIT: Resolvido – ele realmente não gosta de ser executado como root. Certifique-se de que você é um usuário normal desde o início.

# d/boot_dev --init
Usando fonte em: /root/dev/discourse
Usando dados em:   /root/dev/discourse/data/postgres
release: Puxando de discourse/discourse_dev
214ca5fb9032: Pull completo
37cd9d4cd9e6: Pull completo
9b38588fc778: Pull completo
cb13139046fe: Pull completo
1243de3fe752: Pull completo
ec3e5331f9b3: Pull completo
0fab0821518d: Pull completo
9b5e686bba91: Pull completo
428573951790: Pull completo
38013f421bac: Pull completo
733b166992df: Pull completo
1fb3d7e57e63: Pull completo
f76a1270a527: Pull completo
133993b18ebe: Pull completo
226b3b82cab1: Pull completo
Digest: sha256:0a08c79cd8997e3bfac037625f2f5b2f26a64564113116b8c18969484b00a8ce
Status: Imagem mais recente baixada para discourse/discourse_dev:release
docker.io/discourse/discourse_dev:release
439f53088cc4aab844a8864b779056a576c731ba4723d4cf8b23d0e97c8ae79c
Instalando gems...
^TOs seguintes arquivos podem não ser graváveis, então sudo é necessário:
  /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
Usando rake 13.0.6
Usando concurrent-ruby 1.1.10
Usando i18n 1.10.0
Usando minitest 5.15.0
Usando tzinfo 2.0.4
Usando activesupport 7.0.3
Usando builder 3.2.4
Usando erubi 1.10.0
Usando racc 1.6.0
Usando nokogiri 1.13.6 (x86_64-linux)
Usando rails-dom-testing 2.0.3
Usando crass 1.0.6
Usando loofah 2.18.0
Usando rails-html-sanitizer 1.4.2
Usando actionview 7.0.3
Usando rack 2.2.3
Usando rack-test 1.1.0
Usando actionpack 7.0.3
Usando globalid 1.0.0
Usando activejob 7.0.3
Usando mini_mime 1.1.2
Usando mail 2.8.0.edge de https://github.com/discourse/mail.git
Usando digest 3.1.0
Usando timeout 0.2.0
Usando net-protocol 0.1.3
Usando strscan 3.0.3
Usando net-imap 0.2.3
Usando net-pop 0.1.1
Usando net-smtp 0.3.1
Usando actionmailer 7.0.3
Usando actionview_precompiler 0.2.3
Usando activemodel 7.0.3
Usando active_model_serializers 0.8.4
Usando activerecord 7.0.3
Usando public_suffix 4.0.7
Usando addressable 2.8.0
Usando annotate 3.2.0
Usando ast 2.4.2
Usando aws-eventstream 1.2.0
Usando aws-partitions 1.583.0
Usando aws-sigv4 1.5.0
Usando jmespath 1.6.1
Usando aws-sdk-core 3.130.2
Usando aws-sdk-kms 1.56.0
Usando aws-sdk-s3 1.114.0
Usando aws-sdk-sns 1.53.0
Usando ember-source 2.18.2
Usando execjs 2.8.1
Usando barber 0.12.2
Usando coderay 1.1.3
Usando better_errors 2.9.1
Usando debug_inspector 1.1.0
Usando binding_of_caller 1.0.0
Usando msgpack 1.5.1
Usando bootsnap 1.11.1
Usando uniform_notifier 1.16.0
Usando bullet 7.0.1
Usando bundler 2.3.13
Usando byebug 11.1.3
Usando cbor 0.5.9.6
Usando certified 1.0.0
Usando chunky_png 1.4.0
Usando colored2 3.1.2
Usando connection_pool 2.2.5
Usando ipaddr 1.2.4
Usando openssl 2.2.1
Usando openssl-signature_algorithm 1.1.1
Usando cose 1.2.0
Usando cppjieba_rb 0.4.2
Usando rexml 3.2.5
Usando crack 0.4.5
Usando css_parser 1.11.0
Usando diff-lcs 1.5.0
Usando diffy 3.4.0
Usando ember-data-source 3.0.2
Usando sprockets 3.7.2
Usando ember-handlebars-template 0.8.0
Usando method_source 1.0.0
Usando thor 1.2.1
Usando zeitwerk 2.5.4
Usando railties 7.0.3
Usando jquery-rails 4.4.0
Usando discourse-ember-rails 0.18.6
Usando discourse-ember-source 3.12.2.3
Usando discourse-fonts 0.0.9
Usando faker 2.21.0
Usando literate_randomizer 0.4.0
Usando discourse_dev_assets 0.0.4
Usando docile 1.4.0
Usando regexp_parser 2.4.0
Usando ecma-re-validator 0.4.0
Usando email_reply_trimmer 0.1.13
Usando excon 0.92.3
Usando exifr 1.3.9
Usando fabrication 2.28.0
Usando fakeweb 1.3.0
Usando faraday-em_http 1.0.0
Usando faraday-em_synchrony 1.0.0
Usando faraday-excon 1.1.0
Usando faraday-httpclient 1.0.1
Usando multipart-post 2.1.1
Usando faraday-multipart 1.0.3
Usando faraday-net_http 1.0.1
Usando faraday-net_http_persistent 1.2.0
Usando faraday-patron 1.0.0
Usando faraday-rack 1.0.0
Usando faraday-retry 1.0.3
Usando ruby2_keywords 0.0.5
Usando faraday 1.10.0
Usando fast_blank 1.0.1
Usando fast_xs 0.8.0
Usando fastimage 2.2.6
Usando ffi 1.15.5
Usando fspath 3.1.2
Usando gc_tracer 1.5.1
Usando guess_html_encoding 0.0.11
Usando hana 1.3.7
Usando hashdiff 1.0.1
Usando hashie 5.0.0
Usando highline 2.0.3
Usando hkdf 0.3.0
Usando htmlentities 4.3.4
Usando http_accept_language 2.1.1
Usando image_size 3.0.1
Usando in_threads 1.6.0
Usando progress 3.6.0
Usando image_optim 0.31.1
Usando json 2.6.1
Usando json-schema 2.8.1
Usando uri_template 0.7.0
Usando json_schemer 0.2.21
Usando jwt 2.3.0
Usando kgio 2.11.4
Usando libv8-node 16.10.0.0 (x86_64-linux)
Usando rb-fsevent 0.11.1
Usando rb-inotify 0.10.1
Usando listen 3.7.1
Usando request_store 1.5.1
Usando lograge 0.12.0
Usando logstash-event 1.2.02
Usando logstash-logger 0.26.1
Usando logster 2.11.2
Usando lru_redux 1.1.0
Usando lz4-ruby 0.3.3
Usando maxminddb 0.1.22
Usando memory_profiler 1.0.0
Usando message_bus 4.2.0
Usando mini_racer 0.6.2
Usando redis 4.5.1
Usando sidekiq 6.4.2
Usando mini_scheduler 0.13.0
Usando mini_sql 1.4.0
Usando mini_suffix 0.3.3
Usando mocha 1.14.0
Usando multi_json 1.15.0
Usando multi_xml 0.6.0
Usando mustache 1.1.1
Usando uri 0.11.0
Usando net-http 0.2.2
Usando nio4r 2.5.8
Usando oauth 0.5.10
Usando oauth2 1.4.7
Usando oj 3.13.11
Usando omniauth 1.9.1
Usando omniauth-oauth2 1.7.2
Usando omniauth-facebook 9.0.0
Usando omniauth-github 1.4.0
Usando omniauth-google-oauth2 0.8.2
Usando omniauth-oauth 1.2.0
Usando omniauth-twitter 1.4.0
Usando optimist 3.0.1
Usando parallel 1.22.1
Usando parallel_tests 3.8.1
Usando parser 3.1.2.0
Usando pg 1.3.5
Usando pry 0.13.1
Usando pry-byebug 3.9.0
Usando pry-rails 0.3.9
Usando puma 5.6.4
Usando r2 0.2.7
Usando rack-mini-profiler 3.0.0
Usando rack-protection 2.2.0
Usando rails_failover 0.8.1
Usando rails_multisite 4.0.1
Usando rainbow 3.1.1
Usando raindrops 0.20.0
Usando rbtrace 0.4.14
Usando rchardet 1.8.0
Usando redis-namespace 1.8.2
Usando rinku 2.0.6
Usando rotp 6.2.0
Usando rqrcode_core 1.2.0
Usando rqrcode 2.1.1
Usando rspec-support 3.11.0
Usando rspec-core 3.11.0
Usando rspec-expectations 3.11.0
Usando rspec-mocks 3.11.1
Usando rspec 3.11.0
Usando rspec-html-matchers 0.9.4
Usando rspec-rails 5.1.2
Usando rss 0.2.9
Usando rswag-specs 2.5.1
Usando rubocop-ast 1.18.0
Usando ruby-progressbar 1.11.0
Usando unicode-display_width 2.1.0
Usando rubocop 1.29.1
Usando rubocop-rspec 2.10.0
Usando rubocop-discourse 2.5.0
Usando ruby-prof 1.4.3
Usando ruby-readability 0.7.0
Usando rubyzip 2.3.2
Usando sanitize 6.0.0
Usando sassc 2.0.1
Usando sprockets-rails 3.4.2
Usando tilt 2.0.10
Usando sassc-rails 2.1.2
Usando seed-fu 2.3.9
Usando shoulda-matchers 5.1.0
Usando simplecov-html 0.12.3
Usando simplecov_json_formatter 0.1.4
Usando simplecov 0.21.2
Usando sshkey 2.0.0
Usando stackprof 0.2.19
Usando test-prof 1.0.9
Usando uglifier 4.2.0
Usando unf_ext 0.0.8.1
Usando unf 0.1.4
Usando unicorn 6.1.0
Usando webmock 3.14.0
Usando webpush 1.1.0
Usando xorcist 1.1.2
Usando yaml-lint 0.0.10
Bundle completo! 126 dependências de Gemfile, 232 gems agora instaladas.
Use `bundle info [gemname]` para ver onde um gem empacotado está instalado.
1 gem instalado do qual você depende diretamente está procurando por financiamento.
  Execute `bundle fund` para detalhes
Migrando banco de dados...
rake abortou!
Errno::EACCES: Permissão negada @ 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>'
(Veja o rastreamento completo executando a tarefa com --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': Permissão negada @ dir_s_mkdir - /src/tmp (Errno::EACCES)
1 curtida


como desativo o cors para desenvolvimento?
Quero enviar requisições cors da origem http://localhost:3001, mas a configuração cors_origin não tem efeito. o cabeçalho Access-Control-Allow-Origin não aparece.
deixa pra lá. Resolvi. parece que a configuração enable_cors é ignorada no modo de desenvolvimento.

então o middleware cors nunca é instalado. Apenas removi a instrução if no meu repositório local do discourse para que o middleware seja instalado em qualquer caso.

Talvez um dev (ou o autor deste guia, @rishabh, talvez?) possa me ajudar aqui. Segui o guia do OP à risca, em uma nova instalação de VM com Ubuntu 22.04, usando uma conta de usuário (não root).

  • Ao criar um link simbólico do plugin na subpasta discourse/plugins/, as alterações no código JS inicializador do plugin não são vistas a menos que eu execute d/shutdown_dev; d/boot_dev, apesar de reiniciar d/rails s e d/ember-cli.

  • Ao copiar o plugin para a subpasta discourse/plugins/, as alterações no código JS inicializador do plugin são vistas sem executar d/shutdown_dev; d/boot_dev, mas apenas reiniciando d/rails s e d/ember-cli.

O plugin em questão é o discourse-math, e o código que estou alterando está em assets/initializers/javascript/*.js. Notei que esses arquivos são carregados lateralmente e não chamados diretamente por GET HTTP pelo navegador (não tenho certeza se isso faz diferença).

p.s. Sou novo no Discourse, mas não no desenvolvimento web/JS (em outras palavras, não precisa me perguntar se atualizei o navegador :slight_smile: )

Um desenvolvedor pode verificar este erro? Parece estar relacionado ao Ruby e não a uma situação específica. Eu estava instalando o Discourse para Desenvolvimento no Windows seguindo estas instruções para a instalação do Docker, o que já fiz com sucesso várias vezes. O script chegou à instalação do banco de dados e falhou. O primeiro aviso não parece fatal, mas há um arquivo xss.min.js faltando mais adiante neste log, o que foi fatal:

‘’'Você está tentando executar migrações em seu ambiente de teste e não está carregando plugins, definindo LOAD_PLUGINS para 1
AVISO DE DEPRECIAÇÃO: O uso do manuseio de conexão legado está obsoleto. Por favor, defina
legacy_connection_handling para false em sua aplicação.

O novo manuseio de conexão não suporta os getters e setters de connection_handlers.

Leia mais sobre como migrar em: Multiple Databases with Active Record — Ruby on Rails Guides
(chamado de em /src/config/environment.rb:7)
== 20150501152228 RenameTotalVotesToVoters: migrando =========================
== 20150501152228 RenameTotalVotesToVoters: migrado (0.0106s) ===============
== 20151016163051 MergePollsVotes: migrando ==================================
== 20151016163051 MergePollsVotes: migrado (0.0017s) =========================
== 20160321164925 ClosePollsInClosedTopics: migrando =========================
== 20160321164925 ClosePollsInClosedTopics: migrado (0.0281s) ===============
== 20180820073549 CreatePollsTables: migrando ================================
– create_table(:polls, {})
→ 0.0067s
– add_index(:polls, [:post_id, :name], {:unique=>true})
→ 0.0008s
– create_table(:poll_options, {})
→ 0.0039s
– add_index(:poll_options, [:poll_id, :digest], {:unique=>true})
→ 0.0009s
– create_table(:poll_votes, {:id=>false})
→ 0.0044s
– add_index(:poll_votes, [:poll_id, :poll_option_id, :user_id], {:unique=>true})
→ 0.0006s
== 20180820073549 CreatePollsTables: migrado (0.0188s) =======================
== 20180820080623 MigratePollsData: migrando =================================
– 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.0008s
== 20180820080623 MigratePollsData: migrado (0.0033s) ========================
== 20191114160613 AddGraphToPolls: migrando ==================================
– add_column(:polls, :chart_type, :integer, {:default=>0, :null=>false})
→ 0.0012s
== 20191114160613 AddGraphToPolls: migrado (0.0020s) =========================
== 20191206123012 AddGroupNameToPolls: migrando ==============================
– add_column(:polls, :groups, :string, {})
→ 0.0005s
== 20191206123012 AddGroupNameToPolls: migrado (0.0012s) =====================
== 20200520015508 ClearLastGravatarDownloadAttemptOnUserAvatars: migrando ====
– 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.0006s
== 20200520015508 ClearLastGravatarDownloadAttemptOnUserAvatars: migrado (0.0014s)
== 20200804144550 AddTitleToPolls: migrando ==================================
– add_column(:polls, :title, :string, {})
→ 0.0005s
== 20200804144550 AddTitleToPolls: migrado (0.0011s) =========================
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 ’
Tasks: TOP => db:migrate
(Veja o rastreamento completo executando a tarefa com --trace)‘’’

3 curtidas

Muito obrigado por este ótimo recurso. Alguns pontos para ajudar:

  1. Aqui está um comando para excluir e reiniciar completamente os dados:
    docker stop discourse_dev ; docker rm discourse_dev ; sudo rm -rf data ; rm -rf tmp/*

  2. Se você estiver tendo problemas de migração como os acima, certifique-se de ter as permissões corretas. Você deve fazer parte do grupo docker ou usar sudo (segunda opção ruim).

  3. Deixe d/rails s completar antes de iniciar d/ember-cli, caso contrário, haverá alguns problemas estranhos.

1 curtida

Obrigado por isso, Tarek.

Após apagar a instalação e repetir o processo de clonagem, ocorreu exatamente o mesmo erro durante a inicialização, ou seja;
"rake aborted!
“Errno::ENOENT: No such file or directory @ rb_sysopen”

No entanto, desta vez consegui prosseguir com sucesso e cheguei a “Congratulations”. Obrigado.

Agora, como o script terminou mais cedo, não há e-mail de administrador de desenvolvimento nem arquivo de configuração. Seria bom se alguém descobrisse o problema com a inicialização.

Configurei um e-mail de administrador usando o comando “d/rake admin:create” e inseri um e-mail válido e uma senha (mínimo de 10 caracteres).

Consegui então iniciar o Discourse com sucesso em um navegador, conforme instruído.

2 curtidas

Alguém aqui usa Fedora? Isso adiciona um pouco mais de complexidade, porque Podman e SELinux são usados para segurança aprimorada. Podman não é realmente um problema, espero, ele é compatível com OCI e, com podman-docker instalado, todos os comandos Docker são traduzidos para comandos Podman. Para SELinux, acho que encontrei a correção adequada também, mas ainda me deparo com um problema.

Então, enquanto estou no diretório discourse, executo este comando mkdir -vp data/postgres; sudo semanage fcontext -a -t svirt_sandbox_file_t \"/home/user/discourse/data(/.*)?\" \u0026\u0026 restorecon -rv . para aplicar um rótulo de contexto SELinux que considero suficiente para isso (pelo menos, os erros SELinux desapareceram)

Mas ainda me deparo com este erro:

[user@fedora discourse]$ d/boot_dev --init
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
Error: template: info:1:2: executing "info" at <.Architecture>: can't evaluate field Architecture in type *define.Info
WARNING: Docker architecture is not x86_64.
Discourse development is unlikely to work using Docker's architecture emulation.
Please try a native development installation.
Using source in: /home/user/discourse
Using data in:   /home/user/discourse/data/postgres
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
✔ docker.io/discourse/discourse_dev:release
Trying to pull docker.io/discourse/discourse_dev:release...
Getting image source signatures
Copying blob b42e9bacf67a done
Copying blob 3257b89dc3e0 done
Copying blob 8f87c7014fb0 done
Copying blob bf00c24d0f5b done
Copying blob 10e0cd28eb63 done
Copying blob 1efc276f4ff9 done
Copying blob 6d9350d0e59c done
Copying blob 84ee3423e706 done
Copying blob ee2701209d47 done
Copying blob ce48a2c1c5d3 done
Copying blob 2f702c3c2f9f done
Copying blob 27762615d0fc done
Copying blob 7056a5796a1a done
Copying blob c8a22dd30e4c done
Copying blob 1a93cd2f0c23 done
Copying config 6365e737b9 done
Writing manifest to image destination
Storing signatures
6365e737b90aea36af1fd9ed029db43a0a620f1c285416546f5e6ee728aca4c5
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
5282393e248e33800e235b4405c9a7197d10a3fc1d405450f1c99d2a5c7c85c7
Installing gems...
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
Could not locate Gemfile

O journal do systemd relata isto:

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: Universal TUN/TAP device driver, 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: Regex version mismatch, expected: 10.39 2021-10-29 actual: 10.40 2022-04-14
Aug 09 18:47:46 fedora systemd[1684]: selinux: Regex version mismatch, expected: 10.39 2021-10-29 actual: 10.40 2022-04-14
Aug 09 18:47:46 fedora systemd[1684]: selinux: Regex version mismatch, expected: 10.39 2021-10-29 actual: 10.40 2022-04-14
Aug 09 18:47:46 fedora systemd[1684]: Started libpod-conmon-5282393e248e33800e235b4405c9a7197d10a3fc1d405450f1c99d2a5c7c85c7.scope.
Aug 09 18:47:46 fedora systemd[1684]: Started libpod-5282393e248e33800e235b4405c9a7197d10a3fc1d405450f1c99d2a5c7c85c7.scope - libcrun container.
Aug 09 18:47:46 fedora chronyd[792]: Selected source 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: executing /etc/runit/1.d/00-fix-var-logs
Aug 09 18:47:46 fedora discourse_dev[19420]: run-parts: executing /etc/runit/1.d/anacron
Aug 09 18:47:46 fedora discourse_dev[19420]: run-parts: executing /etc/runit/1.d/cleanup-pids
Aug 09 18:47:46 fedora discourse_dev[19420]: Cleaning stale PID files
Aug 09 18:47:46 fedora discourse_dev[19420]: run-parts: executing /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]: Started runsvdir, PID is 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)

O diretório de log no diretório discourse está vazio, como posso solucionar isso melhor?
Os caminhos parecem estar definidos corretamente para encontrar o arquivo Gem.

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

Tive algum sucesso há muito tempo com um ambiente de desenvolvimento Fedora virtual do zero, mas não consegui fazer um setup de produção funcionar. Também perguntei ao Podman Q, a quem alguém gentilmente respondeu dizendo que era possível, mas com muitas coisas para mudar, o que ele não teve tempo de fazer. .

Eu adoraria ter versões Fedora de Desenvolvimento e Produção funcionando. .

2 curtidas

Não entendi essa pergunta. Ele aborta com isto:

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)

Eu gostaria de usar o Ubuntu, mas por algum motivo ele não funciona bem com o spice-vdagent, muitos erros gráficos ao executar a VM. O Fedora funciona liso como manteiga… Pensei que contêineres corrigiam a portabilidade :stuck_out_tongue: Acho que vou apenas configurar um sistema Ubuntu sem interface gráfica e fazer login via SSH.


Eu recebo o mesmo erro no Ubuntu Server 22.04

Eu também tenho este problema. Segui e verifiquei novamente as sugestões de @tarek. O problema continua a retornar. Também limpei todo o diretório do discourse e comecei do zero. Usando Ubuntu 22.04.01 em uma VM e usando o Docker mais recente disponível para Ubuntu.

1 curtida

No git master atual, isso não será concluído com sucesso. Acredito que seja um bug no core. Para colocar um ambiente de desenvolvimento em funcionamento, faça o seguinte após o erro:

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

mais em os dois terminais seguintes, d/ember-cli e d/mailhog.

4 curtidas

Alguma ideia de como posso impedir que d/rails s mostre toda a saída da consulta? Isso torna muito mais difícil usar o byebug e outras ferramentas para descobrir onde estão os bugs para mim.

2 curtidas

Tente: DISCOURSE_DEV_LOG_LEVEL=info bin/rails s

Mais dicas aqui: https://discourse.pluginmanager.org/t/debugging-ruby-with-byebug/378?u=merefield

7 curtidas

Olá,

Estou tentando executar isto no Ubuntu em stable (v2.8.8) e estou recebendo os seguintes erros:

Migrating database...
== 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 exists
/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>'

Caused by:
ActiveRecord::StatementInvalid: PG::DuplicateColumn: ERROR:  column "bookmarkable_id" of relation "bookmarks" already exists
/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>'

Caused by:
PG::DuplicateColumn: ERROR:  column "bookmarkable_id" of relation "bookmarks" already exists
/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>'

Tasks: TOP => db:migrate
(See full trace by running task with --trace)

Eu tentei fazer:

d/rake db:migrate RAILS_ENV=development

Mas acabo com o mesmo erro. Alguém já passou por isso?

Tenho a suspeita de que você está usando o mesmo banco de dados de antes, então ele já foi migrado?

Na verdade, @hyphalos, retiro o que disse. Consigo reproduzir isso com os seguintes comandos shell dentro do container:

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

Algo não está certo aqui?

Parece que esta migração pode ser problemática?:

== 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

o que é estranho (?) porque:

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)

Isso não afeta o tests-passed, parece, apenas o branch stable?

Graças a @RGJ, isso pode lançar alguma luz:

CC: @pfaffman

1 curtida

Olá @Robert,

Pensei que estava ficando louco, pensei que era o único a passar por isso. Tive dificuldade em encontrar uma solução alternativa para isso. Tenho uma postagem anterior aqui onde encontrei uma solução alternativa para o problema do marcador, mas encontrei outro problema:

Alguém pode me indicar a direção certa para consertar isso?
Isso ocorre quando tento executar d/boot_dev --init

rake abortou!
ActiveRecord::ConnectionNotEstablished: conexão com o servidor em "127.0.0.1", porta 5432 falhou: Conexão recusada
        O servidor está em execução nesse host e aceitando conexões TCP/IP?
conexão com o servidor em "::1", porta 5432 falhou: Não é possível atribuir o endereço solicitado
        O servidor está em execução nesse host e aceitando conexões TCP/IP?
/src/config/initializers/006-ensure_login_hint.rb:8:in `block in <main>'
/src/config/environment.rb:7:in `<main>'

Causado por:
PG::ConnectionBad: conexão com o servidor em "127.0.0.1", porta 5432 falhou: Conexão recusada
        O servidor está em execução nesse host e aceitando conexões TCP/IP?
conexão com o servidor em "::1", porta 5432 falhou: Não é possível atribuir o endereço solicitado
        O servidor está em execução nesse host e aceitando conexões TCP/IP?
/src/config/initializers/006-ensure_login_hint.rb:8:in `block in <main>'
/src/config/environment.rb:7:in `<main>'
Tarefas: TOP => db:migrate => db:load_config => environment
(Veja o rastreamento completo executando a tarefa com --trace)

Obrigado por qualquer ajuda antecipada :smile:

1 curtida

Estou recebendo o seguinte erro ao executar d/boot_dev --init

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

rake abortou!
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)