Capito, sì, sistemi operativi diversi e altro. Qualcuno ha già chiesto come ho fatto, posterò qui nel caso.
È necessario Ruby 3.2.x (tramite rbenv, così non si dipende dal sistema operativo), Node v16.19.x/npm 8.19.x e PostgreSQL (probabilmente qualsiasi versione sopra la 11).
- Ho creato un file
.ruby-version, che specificava la versione di ruby che ho installato (3.2.2).
- Ho eseguito
bundle e tutte le gem sono state compilate senza problemi.
- All’interno di PostgreSQL stesso, ho dovuto configurare il database:
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;
Mi ha sorpreso che database.yml non accetti variabili production (questo sembra molto anti-convenzione Rails). Tutte le impostazioni del database erano in config/discourse.conf, insieme ai valori SMTP. Li ho compilati.
Quindi ho eseguito le migrazioni del database:
bundle exec rails db:migrate
Tutto ha funzionato bene e le migrazioni sono andate a buon fine.
- In
config/sidekiq.yml, dopo la sezione development, ho aggiunto:
production:
:concurrency: 2
:queues:
- [critical, 2]
- [default, 1]
- [low]
- [ultra_low]
- Quindi modifica
lib/tasks/assets.rake, intorno alla riga 151, aggiungi:
harmony: true,
così diventa:
uglified, map =
Uglifier.new(
comments: :none,
harmony: true,
source_map: {
filename: File.basename(from),
output_filename: File.basename(to),
},
).comp
E installa i seguenti pacchetti npm:
npm install terser
npm install -g uglify-js@"<3"
Quindi compila gli asset:
RAILS_ENV=production bundle exec rake assets:precompile
Ed ecco fatto! Ora questo dovrebbe funzionare:
bundle exec sidekiq -e production -C config/sidekiq.yml
bundle exec puma --config config/puma.rb -e production
Questo avvia sidekiq e il server web puma.
(molto più economico e con più controllo, cioè ho già Ruby 3.2.2 in esecuzione). La maggior parte del tempo è stata dedicata a superare le stranezze (come la ricerca dei valori production dato che non erano dove dovevano essere). Ma a parte questo, è stato abbastanza veloce!