s4naです。
とうとうRuby 3.1にYJITが追加されましたね🎉🎉🎉
YJIT has been merged. https://t.co/EeSR7atzMr #ruby
— Hiroshi SHIBATA (@hsbt) October 20, 2021
Shopifyさんのブログによると、既にRailsでも動作するという話がありました。
今回はmacOSでRailsを動かす方法について書いてみました。
作業するにあたって必要な環境
- homebrew, ruby-build, rbenvインストール済み
- rbenvにて何らかのバージョンのRubyがインストールしてあり、動作する状態
ruby-buildの更新
まずは開発中のRuby3.1をインストールするために、ruby-buildの更新をします。
brew upgrade ruby-build
rbenvでインストール
以下コマンドを実行して、 3.1.0-dev
がインストール可能であることを確認します。
rbenv install --list-all | grep 3.1.0
実行結果が以下のように 3.1.0-dev
が含まれていれば大丈夫です。🙆♂️
※Ruby 3.1.0リリース以降は、以降の 3.1.0-dev
という文字列を 3.1.0
と読み替えてください🙏
3.1.0-dev jruby-9.3.1.0 rbx-3.100
3.1.0-dev
をインストールする
rbenv install 3.1.0-dev
$rails newする
試しに最新のRailsだと失敗したので、Railsのmainブランチを使ってRails newします。
まずはローカルにRailsをcloneします。
git clone git@github.com:rails/rails.git
次に $rails new
するディレクトリを作成します。
mkdir my-test-app
cd my-test-app
ディレクトリに移動したら、rbenvで別のRubyのバージョンが指定されている可能性もあるので、localで 3.1.0-dev
を指定しておきます。
rbenv local 3.1.0-dev
以下コマンドで、別ディレクトリにcloneしたRailsを使って rails new
できます。
※以下コマンドの場合、一つ上のディレクトリに git@github.com:rails/rails.git
がcloneされていることを想定しています。
RUBYOPT='--yjit' ../rails/railties/exe/rails new . --edge --dev
※ RUBYOPT
については以下を参照してください。環境変数として設定することで、Rubyに標準的にオプションを渡すことができます。
RailsがYJITで動作しているか確認
最後にRailsがYJITで動作しているか確認します。
RUBYOPT='--yjit' bundle exec rails s
http://localhost:3000/ にアクセスすると以下のように、画面下部に +YJIT
と表示されているのでYJITで動いていることがわかります。