blog.waterlow.work

Ruby, Rails, js, etc...

Rails7.1でRailsチュートリアルを進める上での変更点

ひさしぶりにRailsチュートリアルをやろうと思い、どうせならgem等は最新のもの、使い慣れているものを使おうということですすめていました。

まだ3章しかやっていないのですが、小さくない変更点があったのでまとめます。

RenderのruntimeのデフォルトがDockerに

Renderのデプロイ設定を入れる際のruntimeのデフォルトが、rubyではなくDockerになっています。Rails7.1よりproduction向けのDockerfileがrails new時に作成されるようになりました。Renderのランタイムの判定方法としてはDockerfileがあればdockerで起動するアプリケーションだと判断し、なければその他…としているようです。

Dockerのままでも、以前のようにRubyに変更しても問題なくデプロイされました。

テストが落ちたときに詳細なエラーメッセージが出ない

例えばviewテンプレートが存在しない場合に、以前だと「missing a template」というような結果がテストで表示されていたのがステータスコードのみの表示になります。

Rails7.0

ActionController::MissingExactTemplate: StaticPagesController#about
is missing a template for request formats: text/html

Rails7.1

Expected response to be a <2XX: success>, but was a <406: Not Acceptable>

要因としては、Rails7.1よりRAILS_ENV=testのときのデフォルト設定だと、本番により近いエラーレスポンスが返されるようになりました。

https://github.com/rails/rails/pull/45867

週刊Railsウォッチ: Arel::Nodes::Cteが追加、html_escape_onceの修正ほか(20230613前編)|TechRacho by BPS株式会社

デフォルト設定のままだと、ステータスコードから何がまずいのか推測する必要がありそうです。この設定はconfig/environments/test.rbで変更可能です。

他にも気づいたところは随時記載していきます。