Ciao,
Amministro un’installazione di Discourse in self-hosted (2026.5.0-latest). Oggi ho provato ad attivare YJIT. Ho aggiunto "templates/enable-ruby-yjit.yml" a containers/app.yml e ho ricostruito l’applicazione.
Dopo il completamento della ricostruzione, è successo qualcosa di interessante. All’interno del contenitore Docker, ho eseguito env | grep RUBY_YJIT_ENABLE e ho ottenuto RUBY_YJIT_ENABLE=1. Fin qui tutto bene. Ma poi ho eseguito sudo -u discourse RAILS_ENV=production bundle exec rails runner 'puts "YJIT enabled: #{RubyVM::YJIT.enabled?}"; puts RUBY_DESCRIPTION' … e ho ottenuto:
YJIT enabled: false
ruby 3.4.7 (2025-10-08 revision 7a5688e2a2) +PRISM [x86_64-linux]
Quindi YJIT non era attivo, nonostante avessi aggiunto il template enable-ruby-yjit.yml. Poi, quando ho eseguito sudo -u discourse RAILS_ENV=production bundle exec rails runner 'puts "GlobalSetting.yjit_enabled=#{GlobalSetting.yjit_enabled}"', ho ottenuto GlobalSetting.yjit_enabled= — un valore nil!
Comunque, dopo averci smanettato un po’ di più, sono finalmente riuscito ad attivare YJIT aggiungendo quanto segue a containers/app.yml:
env:
DISCOURSE_YJIT_ENABLED: true
Sono certo che ci sia un bug da qualche parte (GlobalSetting.yjit_enabled non dovrebbe mai restituire nil), ma impostare la variabile d’ambiente ha funzionato, e spero che qualcuno che cerca su Google per questo problema trovi questo argomento.