Bonjour,
Je gère une installation Discourse auto-hébergée (2026.5.0-latest). Aujourd’hui, j’ai essayé d’activer YJIT. J’ai ajouté "templates/enable-ruby-yjit.yml" à containers/app.yml et reconstruit l’application.
Une fois la reconstruction terminée, quelque chose d’intéressant s’est produit. Dans le conteneur Docker, j’ai exécuté env | grep RUBY_YJIT_ENABLE et obtenu RUBY_YJIT_ENABLE=1. Jusque-là, tout va bien. Mais ensuite, j’ai exécuté sudo -u discourse RAILS_ENV=production bundle exec rails runner 'puts "YJIT activé : #{RubyVM::YJIT.enabled?}"; puts RUBY_DESCRIPTION'… j’ai obtenu :
YJIT activé : false
ruby 3.4.7 (2025-10-08 révision 7a5688e2a2) +PRISM [x86_64-linux]
YJIT n’était donc pas activé, malgré l’ajout du modèle enable-ruby-yjit.yml. Ensuite, lorsque j’ai exécuté sudo -u discourse RAILS_ENV=production bundle exec rails runner 'puts "GlobalSetting.yjit_enabled=#{GlobalSetting.yjit_enabled}"', j’ai obtenu GlobalSetting.yjit_enabled= — une valeur nil !
Quoi qu’il en soit, après avoir un peu bidouillé, j’ai finalement réussi à activer YJIT en ajoutant ce qui suit à containers/app.yml :
env:
DISCOURSE_YJIT_ENABLED: true
Je suis convaincu qu’il y a un bug quelque part (GlobalSetting.yjit_enabled ne devrait jamais retourner nil), mais la définition de la variable d’environnement a fonctionné, et j’espère que quelqu’un qui cherche cela sur Google trouvera ce sujet.