アクトインディ開発者ブログ

子供とお出かけ情報「いこーよ」を運営する、アクトインディ株式会社の開発者ブログです

YJITでRailsを動かす in macOS

s4naです。

とうとうRuby 3.1にYJITが追加されましたね🎉🎉🎉

Shopifyさんのブログによると、既にRailsでも動作するという話がありました。

今回はmacOSでRailsを動かす方法について書いてみました。

shopify.engineering

作業するにあたって必要な環境

  • 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します。

github.com

まずはローカルに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に標準的にオプションを渡すことができます。

docs.ruby-lang.org

RailsがYJITで動作しているか確認

最後にRailsがYJITで動作しているか確認します。

RUBYOPT='--yjit' bundle exec rails s

http://localhost:3000/ にアクセスすると以下のように、画面下部に +YJIT と表示されているのでYJITで動いていることがわかります。

f:id:s4na:20211027225046p:plain