Rails 7.1正式版がリリース - Dockerfileや認証システムの改善、非同期クエリの拡充など新機能多数

[PR]記事内のアフィリエイトリンクから収入を得る場合があります
  • URLをコピーしました!

S 20231007 102723

Railsプロジェクトは10月5日(現地時間)、Railsのメジャーバージョンアップ版「Rails 7.1」をリリースしました(公式ブログ)。このリリースでは、Rails 7.0以降、800人以上の貢献者によって5,000を超えるコミットが行われています。

Rails 7.1では、新規にアプリケーションを生成する際に、Docker関連ファイルが作成されるようになりました。作成されたファイルは、Dockerを使用して本番環境にRailsアプリケーションをデプロイするための基本的なセットアップとして機能し、開発目的ではないとのことです。

docker build -t app .
docker volume create app-storage
docker run --rm -it -v app-storage:/rails/storage -p 3000:3000 --env RAILS_MASTER_KEY= app

また、開発者が独自の認証システムを構築するのに役立つ新機能が追加されています。データベースに保存する前に属性を正規化するのに便利なnormalizesや、ユーザ認証の際に一般的なタイミング攻撃から保護するauthenticate_by、パスワードリセットなどトークンを必要とする機能ためのgenerate_token_for、パスワード更新時に現在のパスワードを自動的に検証できるhas_secure_passwordが利用可能となっています。

has_secure_passwordの使用例:


# Schema: User(name:string, password_digest:string)
class User < ActiveRecord::Base
  has_secure_password
end

user = User.new(name: "rafael", password: "railsrocks", password_confirmation: "railsrocks")
user.save                                                                      # => true
user.update(password: "pwn3d", password_challenge: "")                         # => false, challenge doesn't authenticate
user.update(password: "railsGetsEvenBetter", password_challenge: "railsrocks") # => true

Active Recordの非同期クエリが拡充され、複数の遅いクエリをリクエストの処理を進めながら並行して実行することが容易になりました。非同期集計(count、sumなど)、単一レコードを返すメソッド、Relation以外のメソッドが追加されています。

  • async_count
  • async_sum
  • async_minimum
  • async_maximum
  • async_average
  • async_pluck
  • async_pick
  • async_find_by_sql
  • async_count_by_sql

Trilogy MySQLアダプタの組み込みサポートや、複合主キーのサポート、大量のジョブを同時にエンキューするperform_all_laterの追加、config.autoload_libconfig.autoload_lib_onceの導入によるオートロードの強化、JavaScriptランタイムBunのサポートなど、さまざまな新機能が追加されています。

Ruby on Rails 7.1の新機能についてはリリースノートでも確認可能です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次