Techioz Blog

Bundler で Ruby のプレビュー リリースを使用し、引き続き Heroku にデプロイする方法

概要

バンドラーと Heroku を使用するプロジェクトで、ruby-3.3.0-preview1 リリースをテストしたいのですが、バンドラーをローカルでプレビュー バージョンで動作させることはできますが、それを Heroku にデプロイすることはできず、Heraku ドキュメントの手順は機能しません。地元で働く。

Ruby のバージョンをインストールし (rbenv を使用しています)、.ruby-version ファイルを 3.3.0-preview1 に設定して使用するバージョンを設定します (または、必要に応じて、rbenv- を使用して単に 3.3.0 と呼ぶこともできます)。エイリアスプラグインを使用しますが、これでも問題は解決されません)。

Gemfile でプレビュー バージョンを使用するには、別の似た名前を指定します。

ruby '3.3.0preview1'

期待どおりに動作し、ローカルですべての gem を新しいバージョン内にインストールすると、アプリケーション内の RUBY_VERSION が 3.3.0 であることが確認できます。

しかし、Heraku はこのバージョンを受け入れず、次のエラーが発生します。

The Ruby version you are trying to install does not exist: ruby-3.3.0.preview1

Heroku のドキュメントでは、Gemfile に 3.3.0 を入れることを推奨していますが、これも実際には機能しません。3.3.0 だけを使用すると、バンドラーがローカルで実行されないためです。

Your Ruby version is 3.3.0.preview1, but your Gemfile specified 3.3.0

観察: Gemfile のパッチレベルとしてプレビュー 1 を指定しようとしましたが、これも機能しません。

ruby '3.3.0', patchlevel: 'preview1'

[更新] 参考のために、これはバグであると思われるため、heroku-buildpack リポジトリに問題を作成しました。

https://translate.google.com/translate?hl=ja&sl=en&tl=ja&u=https://github.com/heroku/heroku-buildpack-ruby/issues/1387

解決策

この回答は、OPで言及された問題をデバッグするときに検討するチェックリストのようなものになったので、これを将来の読者(私自身を含む)にメモとして残しました。

Heroku スタックを変更する必要がある場合があります。

そして、あなたは自分のものをチェックすることができます

heroku stack

最新のもの (heroku-22) を使用していることを確認します。通常、これは新しい Ruby バージョンをサポートしており、3.3.0-preview1 の Gemfile では 3.3.0 を使用するように指示されています。

heroku-22 ではない場合は、次のように設定する必要があります。

heroku stack:set heroku-22

最新のスタックへのアップグレードには、そのフローといくつかの影響があることに注意してください。

3.3.0-preview1 は 5 月 12 日から利用可能になりました

SOに関する同様の質問といくつかの回答:

エラー メッセージが、ruby-3.3.0.preview1 を参照していることに気付きました。そこに .preview1 があるのは奇妙です。 Gemfile で Ruby 3.3.0-preview1 を参照する必要がある箇所のタイプミスでしょうか?

Gemfile と Gemfile.lock の間に問題がある可能性があるため、このリンクは Ruby のバージョンを指定するのに役立ちます。

ビルドパックの悪ふざけ。コメントの 1 つで述べられているように、Heraku はプレビューをチェックするために Gemfile で Ruby “3.3.0” を使用するように Ruby ビルドパックを更新しました1。 次のようにビルドパックを特定のバージョンにロックすることもできます。

heroku buildpacks:set https://github.com/heroku/heroku-buildpack-ruby.git#v254

最新バージョンは v256 ですが、v254 には 3.3.0-preview1 バージョンが含まれていました。 ビルドパックの異なるバージョンを確認/選択すると役立つ場合があります。