Hallo,
ich betreibe eine selbst gehostete Discourse-Installation (2026.5.0-latest). Heute habe ich versucht, YJIT zu aktivieren. Ich habe "templates/enable-ruby-yjit.yml" zu containers/app.yml hinzugefügt und die App neu aufgebaut.
Nach Abschluss des Neubaus geschah etwas Interessantes. Innerhalb des Docker-Containers führte ich env | grep RUBY_YJIT_ENABLE aus und erhielt RUBY_YJIT_ENABLE=1. Bisher alles gut. Als ich dann sudo -u discourse RAILS_ENV=production bundle exec rails runner 'puts "YJIT enabled: #{RubyVM::YJIT.enabled?}"; puts RUBY_DESCRIPTION' ausführte, bekam ich jedoch Folgendes:
YJIT enabled: false
ruby 3.4.7 (2025-10-08 revision 7a5688e2a2) +PRISM [x86_64-linux]
YJIT war also nicht aktiviert, obwohl ich die Vorlage enable-ruby-yjit.yml hinzugefügt hatte. Als ich daraufhin sudo -u discourse RAILS_ENV=production bundle exec rails runner 'puts "GlobalSetting.yjit_enabled=#{GlobalSetting.yjit_enabled}"' ausführte, erhielt ich GlobalSetting.yjit_enabled= – einen nil-Wert!
Nach einigem Herumprobieren habe ich YJIT schließlich aktiviert, indem ich Folgendes zu containers/app.yml hinzufügte:
env:
DISCOURSE_YJIT_ENABLED: true
Ich bin mir sicher, dass es irgendwo einen Fehler gibt (GlobalSetting.yjit_enabled sollte niemals nil zurückgeben), aber das Setzen der Umgebungsvariable hat funktioniert. Ich hoffe, jemand, der nach diesem Problem googelt, wird diesen Beitrag finden.