Entendi, sim, sistemas operacionais diferentes e tal. Já tem alguém perguntando como fiz - vou postar aqui caso precise.
É preciso Ruby 3.2.x (através do rbenv, para não depender do sistema operacional), Node v16.19.x/npm 8.19.x e PostgreSQL (provavelmente qualquer versão acima da 11).
- Criei um arquivo
.ruby-version, que especificava a versão do ruby que instalei (3.2.2).
- Executei
bundle e todas as gems foram compiladas sem problemas.
- Dentro do próprio PostgreSQL, tive que configurar o banco de dados:
CREATE DATABASE discourse;
CREATE USER discourse WITH password 'fA....';
GRANT ALL PRIVILEGES ON DATABASE discourse TO discourse;
\c discourse
GRANT ALL ON SCHEMA public TO discourse;
Fiquei surpreso que o database.yml não aceita variáveis de production (isso parece muito anti-convenção do Rails). Todas as configurações de banco de dados estavam em config/discourse.conf, juntamente com os valores de SMTP. Preenchi esses campos.
Em seguida, executei as migrações do banco de dados:
bundle exec rails db:migrate
Tudo funcionou bem e as migrações foram bem-sucedidas.
- Em
config/sidekiq.yml, após a seção development, adicionei:
production:
:concurrency: 2
:queues:
- [critical, 2]
- [default, 1]
- [low]
- [ultra_low]
- Em seguida, editei
lib/tasks/assets.rake, por volta da linha 151, adicionei:
harmony: true,
para que ficasse assim:
uglified, map =
Uglifier.new(
comments: :none,
harmony: true,
source_map: {
filename: File.basename(from),
output_filename: File.basename(to),
},
).compile
E instalei os seguintes pacotes npm:
npm install terser
npm install -g uglify-js@"<3"
Em seguida, compilei os assets:
RAILS_ENV=production bundle exec rake assets:precompile
E pronto! Agora isso deve funcionar:
bundle exec sidekiq -e production -C config/sidekiq.yml
bundle exec puma --config config/puma.rb -e production
Isso inicia o sidekiq e o servidor web puma.
(muito mais barato e com mais controle, ou seja, já estou usando Ruby 3.2.2). A maior parte do tempo foi contornando as peculiaridades (como procurar valores de production onde não deveriam estar). Mas, fora isso, foi bem rápido!