Olá,
Eu administro uma instalação do Discourse auto-hospedada (2026.5.0-latest). Hoje, tentei ativar o YJIT. Adicionei "templates/enable-ruby-yjit.yml" ao containers/app.yml e reconstruí o aplicativo.
Após a conclusão da reconstrução, algo interessante aconteceu. Dentro do contêiner Docker, executei env | grep RUBY_YJIT_ENABLE e obtive RUBY_YJIT_ENABLE=1. Até aqui, tudo bem. Mas, em seguida, executei sudo -u discourse RAILS_ENV=production bundle exec rails runner 'puts "YJIT enabled: #{RubyVM::YJIT.enabled?}"; puts RUBY_DESCRIPTION'… e obtive:
YJIT enabled: false
ruby 3.4.7 (2025-10-08 revision 7a5688e2a2) +PRISM [x86_64-linux]
Portanto, o YJIT não foi ativado, apesar de ter adicionado o modelo enable-ruby-yjit.yml. Então, quando executei sudo -u discourse RAILS_ENV=production bundle exec rails runner 'puts "GlobalSetting.yjit_enabled=#{GlobalSetting.yjit_enabled}"', obtive GlobalSetting.yjit_enabled= — um valor nil!
De qualquer forma, depois de mexer um pouco mais nisso, finalmente consegui ativar o YJIT adicionando o seguinte ao containers/app.yml:
env:
DISCOURSE_YJIT_ENABLED: true
Tenho certeza de que há um bug em algum lugar (GlobalSetting.yjit_enabled não deveria nunca retornar nil), mas definir a variável de ambiente funcionou, e espero que alguém que esteja pesquisando no Google sobre isso encontre este tópico.