Verstanden, ja, verschiedene Betriebssysteme und so weiter. Jemand fragte bereits, wie ich das gemacht habe – ich poste es hier für den Fall.
Man benötigt Ruby 3.2.x (über rbenv, damit man nicht vom Betriebssystem abhängig ist), Node v16.19.x/npm 8.19.x und PostgreSQL (wahrscheinlich jede Version über 11).
- Ich habe eine
.ruby-version-Datei erstellt, die die Ruby-Version angibt, die ich installiert habe (3.2.2).
- Habe
bundle ausgeführt und alle Gems ließen sich problemlos erstellen.
- Innerhalb von PostgreSQL selbst musste die Datenbank eingerichtet werden:
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;
Ich war überrascht, dass database.yml keine production-Variablen akzeptiert (das scheint sehr gegen die Rails-Konvention zu sein). Alle DB-Einstellungen befanden sich in config/discourse.conf zusammen mit den SMTP-Werten. Diese habe ich ausgefüllt.
Dann wurden die Datenbankmigrationen ausgeführt:
bundle exec rails db:migrate
Alles funktionierte gut und die Migrationen waren erfolgreich.
- In
config/sidekiq.yml habe ich nach dem development-Abschnitt Folgendes hinzugefügt:
production:
:concurrency: 2
:queues:
- [critical, 2]
- [default, 1]
- [low]
- [ultra_low]
- Dann bearbeiten Sie
lib/tasks/assets.rake etwa auf Zeile 151 und fügen Sie hinzu:
harmony: true,
damit es so aussieht:
uglified, map =
Uglifier.new(
comments: :none,
harmony: true,
source_map: {
filename: File.basename(from),
output_filename: File.basename(to),
},
).comp
Und installieren Sie die folgenden npm-Pakete:
npm install terser
npm install -g uglify-js@"<3"
Bauen Sie dann die Assets:
RAILS_ENV=production bundle exec rake assets:precompile
Und voilà! Jetzt sollte dies funktionieren:
bundle exec sidekiq -e production -C config/sidekiq.yml
bundle exec puma --config config/puma.rb -e production
Dies startet sidekiq und den puma-Webserver.
(Viel billiger und mehr Kontrolle, d.h. ich habe bereits Ruby 3.2.2 am Laufen). Die meiste Zeit wurde damit verbracht, die Eigenheiten zu umgehen (wie die Suche nach production-Werten, da sie nicht dort waren, wo sie sein sollten). Aber ansonsten war es ziemlich schnell!