こんにちは、
私はセルフホスト型の Discourse インストール(2026.5.0-latest)を運用しています。本日、YJIT を有効にしようと試みました。containers/app.yml に "templates/enable-ruby-yjit.yml" を追加し、アプリを再構築しました。
再構築が完了すると、興味深い現象が発生しました。Docker コンテナ内で env | grep RUBY_YJIT_ENABLE を実行すると、RUBY_YJIT_ENABLE=1 が表示されました。ここまでは問題ありません。しかし、続けて sudo -u discourse RAILS_ENV=production bundle exec rails runner 'puts "YJIT enabled: #{RubyVM::YJIT.enabled?}"; puts RUBY_DESCRIPTION' を実行すると、以下の結果が得られました:
YJIT enabled: false
ruby 3.4.7 (2025-10-08 revision 7a5688e2a2) +PRISM [x86_64-linux]
enable-ruby-yjit.yml テンプレートを追加したにもかかわらず、YJIT は有効になっていませんでした。その後、sudo -u discourse RAILS_ENV=production bundle exec rails runner 'puts "GlobalSetting.yjit_enabled=#{GlobalSetting.yjit_enabled}"' を実行すると、GlobalSetting.yjit_enabled= という出力が得られ、値は nil でした。
いろいろと試行錯誤した結果、最終的に containers/app.yml に以下の設定を追加することで YJIT を有効化できました:
env:
DISCOURSE_YJIT_ENABLED: true
どこかにバグがあることは間違いありません(GlobalSetting.yjit_enabled が nil を返すべきではありません)。しかし、環境変数を設定することで解決しました。このトピックを検索している誰かの助けになれば幸いです。