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で変更可能です。
他にも気づいたところは随時記載していきます。