Rails8.0.0マイルストーンの現状

これはなに

  • 8.0.0 Milestoneを見て気になったものをまとめています
  • マイルストーンは先週くらいにできたのですがもうマージされているやつもたくさんあります
    • DHHが年末年始にめっちゃ働いている

気になったものたち

  • Ruby3.3以上のサポート
    • DHHは最初3.3以上で、という気持ちだったんだけど流石にみんな大変やろ、という意見が出て結局リリース時(2024年の予定)にサポートされているRubyのバージョン、つまり3.1以上に落ち着いた
    • PR: Bump the required Ruby version to 3.1.0 by byroot · Pull Request #50491 · rails/rails
      • ↑のPRでは「メジャーバージョンアップ時にRubyのサポートを落とす」だとRails自体のメンテも大変だしアプリケーション開発者も大変なので、毎回マイナーバージョンアップでもその時サポートしているRubyのバージョンだけサポートするようにしようぜ、という意見が出ている
      • ついでにセキュリティフィックスバージョンも落とそうぜ、という意見もある
      • このへん最終的にどうなるかわからないけど、Railsのバージョンを上げる会社はRubyのバージョンも上げるのでそんなに影響はない気がしますね
  • solid_queue, solid_cache, prop_shaft, kamalがデフォルトに
  • Action CableのアダプタのデフォルトをDBにする
    • solid_queue, solid_cacheと一緒でredisなしをデフォルトにする方針っぽい
    • もともとpostgresqlはアダプタとして使えたけれど、MySQLやsqlite3でも使えるようにしてそれをデフォルトにする、という方針
      • ONCEではすでにそれでやっている模様
  • 古いブラウザでアクセスしたときに古いよ、と出る機能
class ApplicationController < ActionController::Base
  # Allow only browsers natively supporting webp images, web push, badges, import maps, CSS nesting + :has 
  allow_browser versions: :modern
end

class ApplicationController < ActionController::Base
  # All versions of Chrome and Opera will be allowed, but no versions of "internet explorer" (ie). Safari needs to be 16.4+ and Firefox 121+.
  allow_browser versions: { safari: 16.4, firefox: 121, ie: false }
end

class MessagesController < ApplicationController
  # In addition to the browsers blocked by ApplicationController, also block Opera below 104 and Chrome below 119 for the show action.
  allow_browser versions: { opera: 104, chrome: 119 }, only: :show
end
class SessionsController < ApplicationController
  rate_limit to: 10, within: 3.minutes, only: :create
end

class SignupsController < ApplicationController
  rate_limit to: 1000, within: 10.seconds,
    by: -> { request.domain }, with: -> { redirect_to busy_controller_url, alert: "Too many signups!" }, only: :new
end