🔗 Railties Changelog
参考: Release 8.1.0.beta1 · rails/rails
参考: コミットリスト: Comparing v8.0.2.1...v8.1.0.beta1 · rails/rails
🔗 Add credentials:fetch command by n-studio · Pull Request #53119 · rails/rails
rails credentials:fetch PATH
コマンドを追加。これにより、credentialsファイルからcredentialの値を取得できる。$ bin/rails credentials:fetch kamal_registry.password
Matthew Nguyen, Jean Boussier
同Changelogより
🔗 Avoid dynamic encrypting in generated fixtures by cassiascheffer · Pull Request #55387 · rails/rails
フィクスチャ内では動的なERB式ではなく、静的なBCryptパスワードダイジェストを生成するよう修正。
従来はパスワードダイジェスト属性を持つフィクスチャで
<%= BCrypt::Password.create("secret") %>
が使われていたが、これはテスト実行のたびにハッシュを再生成する。修正後は静的なハッシュを生成するようになり、再生成方法もコメントで示されるようになった。Nate Smith, Cassia Scheffer
同Changelogより
- password_digest: <%%= BCrypt::Password.create("secret") %>
+ password_digest: <%= BCrypt::Password.create("secret") %> # Generated with BCrypt::Password.create("secret")
🔗 gitignore all key files in config/credentials by gregmolnar · Pull Request #54774 · rails/rails
.gitignore
エントリにcredentialsキーを追加するときに、すべてのキーファイルを無視するよう拡張された。Greg Molnar
同Changelogより
🔗 Remove unnecessary ruby-version
input from ruby/setup-ruby
by tangrufus · Pull Request #55120 · rails/rails
rails new
でci.ymlを生成するときに、ruby/setup-ruby
で指定されていた不要な.ruby-version
ファイル参照を削除した。TangRufus
同Changelogより
これにより、Rubyバージョンを上げるときに更新の必要なファイルを減らせます(.tool-versions
ファイルとmise.toml
など)。
🔗 Add --reset option to bin/setup by dhh · Pull Request #54952 · rails/rails
bin/setup
コマンドに--reset
オプションを追加した。これによりdb:reset
がセットアップ中に呼ばれるようになる。DHH
同Changelogより
🔗 Add RuboCop cache to GHA workflow templates by lovro-bikic · Pull Request #54754 · rails/rails
高速化のため、GitHub Actionワークフローのテンプレートで、RuboCopジョブにRuboCopキャッシュの復元タスクを追加。
Lovro Bikić
同Changelogより
🔗 Generate mailer files in auth generator only if ActionMailer is used by ramimassoud · Pull Request #54686 · rails/rails
アプリケーションでAction Mailerを使わない場合は、authenticationコードジェネレータでメーラー関連のファイルを生成しないようになった。
Rami Massoud
同Changelogより
🔗 Structured CI with bin/ci by jeremy · Pull Request #54693 · rails/rails
bin/ci
コマンドが導入された。テストの実行やスタイルチェック、セキュリティ監査をローカルでもクラウドでも同じように実行できる。具体的なステップは
config/ci.rb
内の新しいDSLで定義される。ActiveSupport::ContinuousIntegration.run do step "Setup", "bin/setup --skip-server" step "Style: Ruby", "bin/rubocop" step "Security: Gem audit", "bin/bundler-audit" step "Tests: Rails", "bin/rails test test:system" end
オプションとして、gh-signoff GitHub CLI拡張を使うことで、ローカルでテストを実行してパスしたらプルリクステータスを「グリーン」(マージ可能)にできる。
Jeremy Daer, DHH
同Changelogより
参考: CIを完全にローカルで回せるしくみをサポートする(36:21)
🔗 Generate session controller tests for auth generator by jeromedalbert · Pull Request #53726 · rails/rails
authenticationジェネレータを実行するとセッションコントローラのテストコードも生成するようになった。
Jerome Dalbert
同Changelogより
参考: 週刊Railsウォッチ20250409 -- 認証機能ジェネレータでセッションコントローラのテストも生成するようになった
🔗 Add a default bin/bundle-audit configuration by dhh · Pull Request #54695 · rails/rails
bin/bundler-audit
コマンドとconfig/bundler-audit.yml
コンフィグが新規Railsアプリでデフォルトで追加されるようになった。bundle-auditはアプリケーションのgemに既知のセキュリティ問題があるかどうかを発見して管理する。DHH
同Changelogより
bundler-audit
はbin/ci
コマンドでもデフォルトで実行されるようになります。
🔗 Stop generating bundler binstub: by Edouard-chin · Pull Request #54687 · rails/rails★
rails new
で新規Railsアプリケーションを生成するときに、bin/bundle
を生成しないようになった。
従来の
bin/bundle
は、bundlerの正しいバージョンを有効にするのに使われていたが、現在のbundlerではこの機能がRubygem自身に取り込まれたため、bin/bundle
は不要になった。Edouard Chin
同Changelogより
bundler自身のbinstubを生成すべきでない理由について、詳しくは以下で説明されています。
🔗 Add login_as(user) testing helper when generating authentication by gobijan · Pull Request #53708 · rails/rails
rails g authentication
コマンドを実行するとSessionTestHelper
モジュールが追加されるようになった。このモジュールではsign_in_as(user)
およびsign_out
というテストヘルパーが利用できる。これにより、Railsで生成した認証機能の結合テストがシンプルになる。Bijan Rahnema
同Changelogより
🔗 Rate limit password resets in auth generator by excid3 · Pull Request #54442 · rails/rails
authenticationジェネレータで生成したPasswordコントローラに、パスワードリセットのレート制限が追加された。
これにより、攻撃者がパスワードリセットフォームにスパム送信することを緩和できる。
Chris Oliver
同Changelogより
class PasswordsController < ApplicationController
allow_unauthenticated_access
before_action :set_user_by_token, only: %i[ edit update ]
+ rate_limit to: 10, within: 3.minutes, only: :create, with: -> { redirect_to new_password_path, alert: "Try again later." }
🔗 Extend --minimal option by eelcoj · Pull Request #54313 · rails/rails
rails new
の--minimal
オプションが更新されて、最近追加された機能を以下でスキップするようになった。
skip_brakeman
skip_ci
skip_docker
skip_kamal
skip_rubocop
skip_solid
skip_thruster
eelcoj
同Changelogより
devcontainerは--minimal
でもスキップしないそうです。
参考: Dev Containerでの開発ガイド - Railsガイド
🔗 Add application-name
metadata to application layout by stevepolitodesign · Pull Request #54257 · rails/rails
アプリケーションのレイアウトファイルに
application-name
メタデータを追加。以下のメタタグは
app/views/layouts/application.html.erb
ファイルに追加される。<meta name="application-name" content="Name of Rails Application">
Steve Polito
同Changelogより
🔗 Use secret_key_base
from ENV or credentials when present locally by p8 · Pull Request #53705 · rails/rails★
secret_key_base
が環境変数やcredentialsファイル内に存在する場合は、それらを使うよう修正された。test環境やdevelopment環境で
ENV["SECRET_KEY_BASE"]
またはRails.application.credentials.secret_key_base
が設定済みの場合は、tmp/local_secret.txt
ファイルを生成せずにそれらをRails.config.secret_key_base
で使うようになった。Petrik de Heus
同Changelogより
これはRails 7.2の#49624で発生した問題の修正です。
🔗 CI: Introduce RAILS_MASTER_KEY
placeholder by stevepolitodesign · Pull Request #52230 · rails/rails
ci.ymlファイルの生成時に
RAILS_MASTER_KEY
のプレースホルダが追加されるようになった。Steve Polito
同Changelogより
<%- elsif options[:database] == "postgresql" -%>
DATABASE_URL: postgres://postgres:postgres@localhost:5432
<%- end -%>
+ # RAILS_MASTER_KEY: ${{ secrets.RAILS_MASTER_KEY }}
# REDIS_URL: redis://localhost:6379/0
<%- if options[:api] || options[:skip_system_test] -%>
run: bin/rails db:test:prepare test
🔗 Colorize console prompt on non standard environments by Uaitt · Pull Request #53027 · rails/rails
Railsコンソールを
dev
、test
、prod
以外の非標準環境(staging
など)で表示したときもプロンプトに色を表示するよう修正された。Lorenzo Zabot
同Changelogより
🔗 Don't enable YJIT in development and test environments by aliismayilov · Pull Request #53746 · rails/rails
development環境とtest環境でYJITを有効にしないようになった。
development環境とtest環境ではコードの再読み込みやメソッドの再定義(モックなど)を行うことが多いため、YJITはそれらの環境では一般に高速にならない。
Ali Ismayilov, Jean Boussier
同Changelogより
この設定はconfig.yjit
で変更できます。
🔗 Only include PermissionsPolicy::Middleware if global policy is configured by p8 · Pull Request #53621 · rails/rails
最適化のため、
PermissionsPolicy::Middleware
はグローバルポリシーが設定済みの場合にのみinclude
されるようになった。Petrik de Heus
同Changelogより
参考: §9.4 Feature-Policyヘッダー -- Rails セキュリティガイド - Railsガイド
breaking changesの可能性があるプルリク・コミット
secret_key_base
from ENV or credentials when present locally)★個別のプルリクにも目印として★を追加しています。