Tech Racho エンジニアの「?」を「!」に。
  • Ruby / Rails関連

Rails 7.1.0 Railties CHANGELOG(翻訳)

概要

MITライセンスに基づいて翻訳・公開いたします。

rc2以後の更新はありません。

🔗 Railties CHANGELOG(7.1.0.rc2)

🔗 Fix the BroadcastLogger being initialized too late: by Edouard-chin · Pull Request #49417 · rails/rails

Railsロガーが常にActiveSupport::BroadcastLoggerのインスタンスになるよう修正。

Edouard Chin
同CHANGELOGより

参考: ActiveSupport::BroadcastLoggerは以下のプルリクによって7.1のActive Supportに追加されました。

また、以下の修正もマージされました。

🔗 Railties CHANGELOG(7.1.0.rc1)

🔗 Fix uninitialized constant error on Puma boot by mattbrictson · Pull Request #49325 · rails/rails

production環境でWEB_CONCURRENCY環境変数が明示的に指定されていない場合でもPumaが起動できるよう、config/puma.rbrequire "concurrent-ruby"を追加。

修正: #49323

Matt Brictson
同CHANGELOGより

🔗 Raise error when generating attribute with dangerous name by p8 · Pull Request #47752 · rails/rails

属性名が衝突する危険がある場合にエラーをraiseするようになった。

以下のコマンドは、savehashが既にActive Recordで定義済みなのでエラーになる。

$ bin/rails generate model Post save
$ bin/rails generate model Post hash

Petrik de Heus
同CHANGELOGより

参考: 週刊Railsウォッチ20230926: 名前が衝突する属性名を生成するとエラーを発生するようになった

🔗 Railties CHANGELOG(v7.1.0.beta1)

🔗 Add ability to show slow tests to the test runner by fatkodima · Pull Request #49082 · rails/rails

テストランナーで遅いテストを表示する機能を追加。

bin/test --profile    # 最も遅いテストを10件表示(デフォルト)

# または

bin/test --profile 20 # 最も遅いテストを20件表示

fatkodima
同CHANGELOGより

参考: --profileはシステムテストでも使えます。

🔗 Add Bun support by terracatta · Pull Request #49241 · rails/rails

rails new --javascriptでBunをサポートするようになった。

rails new my_new_app --javascript=bun

Jason Meller
同CHANGELOGより

oven-sh/bun - GitHub

参考: 週刊Railsウォッチ20230926: rails newでBunを指定できるようになった

🔗 Make bin/setup work with bun by duduribeiro · Pull Request #49229 · rails/rails

Bunを使うアプリを生成した場合に、bin/setupyarnではなくbunを使うよう変更。

bunを使っている場合は、bin/setupbun installを実行するようになる。

Cadu Ribeiro
同CHANGELOGより

🔗 Generate config.autoload_lib(...) for new apps by fxn · Pull Request #49032 · rails/rails

新規アプリのconfig/application.rbに以下が追加されるようになった。

config.autoload_lib(ignore: %w(assets tasks))

実用上は、Rails 7.1の新規アプリではlibディレクトリをカスタマイズなしでオートロード可能になることを意味する。

Xavier Noria
同CHANGELOGより

参考: 週刊Railsウォッチ20230906: config/application.rbにconfig.autoload_libが追加されるようになった

🔗 Add an option to start rails console in sandbox mode by default by shouichi · Pull Request #48984 · rails/rails

production環境のRailsコンソールをデフォルトでsandboxモードで起動するオプションを追加。

デフォルトでRailsコンソールをsandboxモードで起動するsandbox_by_defaultオプションが追加された。このオプションを有効にすると、sandboxモードをオフにしてRailsを起動するには--no-sandboxを指定しなければならない。

なお、このオプションはRailsがdevelopment環境やtest環境の場合には無視される。

Shouichi Kamiya
同CHANGELOGより

参考: 週刊Railsウォッチ20230906: production環境のRailsコンソールを常にsandboxモードにするコンフィグが追加

🔗 Omit webdrivers gem from Gemfile template by seanpdoyle · Pull Request #48847 · rails/rails

Gemfileテンプレートからwebdrivers gemへの依存を削除。

Sean Doyle
同CHANGELOGより

参考: 週刊Railsウォッチ20230824: webdriversへの依存を解消

🔗 Support filtering tests by line ranges by shouichi · Pull Request #48807 · rails/rails

テストの行範囲を指定して実行できるようになった。

新しい構文ではテストコードの行を範囲指定できるようになる。
たとえば、以下のコマンドはテストコードの10行目〜20行目を実行する。

$ rails test test/models/user_test.rb:10-20

Shouichi Kamiya, Seonggi Yang, oljfte, Ryohei UEDA
同CHANGELOGより

参考: 週刊Railsウォッチ20230823: minitestの行範囲を指定して実行可能になった

🔗 Update default scaffold templates to set 303 (See Other) as status c… · rails/rails@5ed37b3

デフォルトのscaffoldテンプレートを更新し、XHRリクエスト(GETPOSTを除く)に対するupdateアクションでリダイレクト時のステータスコードを303 (See Other)に設定するようになった。これは、ブラウザが元のリクエストメソッドを利用してリダイレクトを追跡し、PATCHPUTが2回発生するなどの問題を回避するため。

Guillermo Iguaran
同CHANGELOGより

この修正は、Rails 7.0.7でリリース済みです

参考: 7.1rc1でscaffold生成したupdate

  # PATCH/PUT /users/1
  def update
    if @user.update(user_params)
      redirect_to @user, notice: "User was successfully updated.", status: :see_other
    else
      render :edit, status: :unprocessable_entity
    end
  end

🔗 Introduce config.autoload_lib_once(ignore:) by fxn · Pull Request #48610 · rails/rails

config.autoload_lib_onceconfig.autoload_libと似ているが、libディレクトリをconfig.autoload_once_pathsに追加する点が異なる。

config.autoload_lib_onceを呼び出すと、アプリケーションのイニシャライザからでもlibディレクトリ内のクラスやモジュールをオートロードする。ただし再読み込みは行われない。

詳しくは定数の自動読み込みと再読み込みガイドを参照。

Xavier Noria
同CHANGELOGより

参考: 週刊Railsウォッチ20230725: config.autoload_lib_onceを追加

🔗 Make the log level in DebugExceptions configurable by skipkayhil · Pull Request #48575 · rails/rails

ActionDispatch::DebugExceptionsで使われるログレベルをカスタマイズするconfig.action_dispatch.debug_exception_log_levelを追加。

デフォルトは:fatalだが、load_defaults "7.1"のデフォルトは:errorになる。

Hartley McGuire
同CHANGELOGより

参考: config.action_dispatch.debug_exception_log_level -- Rails アプリケーションを設定する - Railsガイド

🔗 DATABASE option for railties:install:migrations by SixiS · Pull Request #48579 · rails/rails

railties:install:migrationsDATABASEオプションを追加。

rails railties:install:migrationsの実行時に、マイグレーションのコピー先データベースを指定できる。

$ rails railties:install:migrations DATABASE=animals

Matthew Hirst
同CHANGELOGより

参考: 週刊Railsウォッチ20230725: railties:install:migrationsDATABASEオプションを追加

🔗 Introduce config.autoload_lib by fxn · Pull Request #48572 · rails/rails

新メソッドconfig.autoload_lib(ignore:)は、libディレクトリをシンプルな方法でオートロードする機能を提供する。

# config/application.rb
config.autoload_lib(ignore: %w(assets tasks))

詳しくは定数の自動読み込みと再読み込みガイドを参照。

Xavier Noria
同CHANGELOGより

参考: 週刊Railsウォッチ20230725: config.autoload_libを追加

🔗 Don't show secret_key_base for Rails.application.config#inspect by p8 · Pull Request #48500 · rails/rails

Rails.application.config#inspectsecret_key_baseを表示しないよう修正。

変更前:

Rails.application.config.inspect
"#<Rails::Application::Configuration:0x00000001132b02a0 @root=... @secret_key_base=\"b3c631c314c0bbca50c1b2843150fe33\" ... >"

変更後:

Rails.application.config.inspect
"#<Rails::Application::Configuration:0x00000001132b02a0>"

Petrik de Heus
同CHANGELOGより

参考: 週刊Railsウォッチ20230719: Rails.application.config#inspectsecret_key_baseを出力しないよう修正

🔗 Deprecate calling Rails.application.secrets by p8 · Pull Request #48472 · rails/rails

Rails.application.secretsの呼び出しを非推奨化。

Railsのsecretsは非推奨化されており、今後はcredentialsを使うこと。

Rails.application.secretsを呼び出したら非推奨警告を表示すべき。

Petrik de Heus
同CHANGELOGより

ローカル環境ではsecret_key_baseRails.configに保存するようになった。

Railsのsecretsは非推奨化されており、今後はcredentialsを使うこと。

ローカル環境のsecret_key_baseは、Rails.application.secrets.secret_key_base(弱い非推奨: soft-deprecated)ではなく、Rails.config.secret_key_baseに保存されるようになった。

Petrik de Heus
同CHANGELOGより

参考: 週刊Railsウォッチ20230704: Rails.application.secrets`呼び出しの非推奨化

🔗 Enable force_ssl=true in production by default by searls · Pull Request #47852 · rails/rails

production環境ではデフォルトでforce_ssl=trueを有効にするようになった。アプリへのすべてのアクセスが強制的にSSL(TSL)経由になり、Strict-Transport-Securityとセキュアcookieが使われるようになる。

Justin Searls, Aaron Patterson, Guillermo Iguaran, Vinícius Bispo
同CHANGELOGより

参考: 週刊Railsウォッチ20230704: production環境でforce_ssl=trueをデフォルトで有効にする

🔗 Add engine draw_paths to app by gmcgibbon · Pull Request #48388 · rails/rails

Railsエンジンのdraw_pathsをアプリケーションのルーティングセットに追加するようになった。これにより、エンジンのパスで定義されたルーティングファイルがアプリケーションのルーティングに反映されるようになる。

Gannon McGibbon
同CHANGELOGより

参考: 週刊Railsウォッチ20230628: エンジンのdraw_pathsをアプリのルーティングに追加するようになった

🔗 Support VISUAL env var, and prefer it over EDITOR by smmr0 · Pull Request #48374 · rails/rails

エディタを開くコマンドを指定するVISUAL環境変数をサポート。この設定はEDITOR環境変数よりも優先される。

Summer ☀️
同CHANGELOGより

参考: 週刊Railsウォッチ20230621: ビジュアルエディタ設定用のVISUAL環境変数を追加

🔗 Automatically add test/fixtures in engines to fixture_paths by shioyama · Pull Request #48287 · rails/rails

on_loadフックでエンジンのtest/fixturesパスをfixture_pathsに追加するようになった(パスがRailsアプリケーションのrootディレクトリの下に存在する場合)。

Chris Salzberg
同CHANGELOGより

参考: 週刊Railsウォッチ20230613: fixture_pathsにエンジンのtest/fixturesを自動追加するようになった

🔗 Run after_bundle blocks with app:template command by jonathanhefner · Pull Request #48269 · rails/rails

bin/rails app:templateを実行すると、テンプレートが適用された後でbundle installafter_bundleブロックを自動的に実行するようになった。

Jonathan Hefner and Gerry Caulfield
同CHANGELOGより

参考: 週刊Railsウォッチ20230613: after_bundleブロックがapp:templateコマンドでも実行されるようになった

🔗 Enable passing column size to migration generator by joshbroughton · Pull Request #48210 · rails/rails

マイグレーションのジェネレータでカラムのサイズを属性で指定できるようになった。

従来も、マイグレーションで以下のようにサイズ指定は可能だった。

rails generate migration CreateAuthor name:text{65535}

改修後は、マイグレーションのジェネレータで以下のような形でsize属性を指定可能になった。

rails generate migration CreateAuthor name:text{medium}

上のコマンドで生成されたマイグレーションには、以下のようにsize: medium属性が追加される。

class CreateAuthor < ActiveRecord::Migration[7.1]
  def change
    create_table :authors do |t|
      t.text :name, size: :medium
    end
  end
end

Josh Broughton, Hartley McGuire
同CHANGELOGより

🔗 Raise if setting a config key that is a method name by fxn · Pull Request #48030 · rails/rails

コンフィグのキーと同じ名前のメソッド名に対して値を代入しようとするとエラーを発生するようになった。

config.load_defaults = 7.0
# NoMethodError: Cannot assign to `load_defaults`, it is a configuration method

Xavier Noria
同CHANGELOGより

参考: 週刊Railsウォッチ20230525: メソッド名になっているコンフィグキーに代入したらエラーを発生するようにした

🔗 Remove deprecated secrets:setup and deprecate secrets:edit/show by p8 · Pull Request #47801 · rails/rails

関連: Deprecate calling Rails.application.secrets by p8 · Pull Request #48472 · rails/rails

secrets:editコマンドとsecrets:showコマンドを非推奨化し、secrets:setupコマンドを削除。

bin/rails secrets:setupコマンドはRails 5.2のときから非推奨化されており、代わりにcredentialsを使うようになっていた。このコマンドは削除された。

secrets:editコマンドとsecrets:showコマンドは非推奨化された。今後はcredentialsを使うこと。

詳しくはbin/rails credentials:helpを実行してヘルプを参照のこと。

Petrik de Heus
同CHANGELOGより

🔗 Load Rake tasks only once for command suggestions by jonathanhefner · Pull Request #47718 · rails/rails

bin/rails --helpがフレームワークとプラグインのコマンドのみを表示するようになった。
lib/tasks/*.rakeファイルで定義されたRakeタスクはこのヘルプに表示されなくなった。Rakeタスクのリストを表示するにはrake -Tを実行する。

Jonathan Hefner
同CHANGELOGより

参考: 週刊Railsウォッチ20230425: "Did you mean?"のrakeタスク読み込みの重複を修正

🔗 Use Thor for built-in restart task by p8 · Pull Request #47619 · rails/rails

アプリのディレクトリの外からでもbin/rails restartを実行できるようになった。

従来は、以下を実行すると"No Rakefile found"エラーで失敗した。

$ blog/bin/rails restart

Petrik de Heus
同CHANGELOGより

参考: 週刊Railsウォッチ20230405: Railsアプリをディレクトリの外から再起動可能になった

🔗 Support prerelease rubies in Gemfile template if possible by yahonda · Pull Request #47584 · rails/rails

Gemfileテンプレートでプレリリース版のRubyをサポート(RubyGems 3.3.13以降が必要)。

Yasuo Honda, David Rodríguez
同CHANGELOGより

🔗 Improve support for custom namespaces by fxn · Pull Request #47583 · rails/rails

オートロードのセットアップでユーザーが手動で設定したrootディレクトリを尊重するようになった。

これはカスタム名前空間に関連している。
たとえば、app/servicesディレクトリの下にあるクラスやモジュールをServices名前空間に定義したい場合は、以下のように書くだけでよい(app/services/servicesディレクトリの追加は不要)。

# config/initializers/autoloading.rb

# The namespace has to exist.
#
# In this example we define the module on the spot. Could also be created
# elsewhere and its definition loaded here with an ordinary `require`. In
# any case, `push_dir` expects a class or module object.
module Services; end

Rails.autoloaders.main.push_dir("#{Rails.root}/app/services", namespace: Services)

詳しくは定数の自動読み込みと再読み込みガイドを参照。

Xavier Noria
同CHANGELOGより

参考: 週刊Railsウォッチ20230328: Zeitwerkでのカスタム名前空間のサポート方法をドキュメントに追加

🔗 Make irb a railties dependency by st0012 · Pull Request #47442 · rails/rails

irb gemがRailtiesの必須依存関係としてインストールされるようになった。
つまり、Railsをインストールするとirb gemも別途インストールされる。
以後、RailsコンソールではRuby組み込みのirbではなく、インストールしたirb gemが使われるようになる。

これにより、Railsで信頼性の高い最新のirbを常に利用できるようになる。

Stan Lo
同CHANGELOGより

ruby/irb - GitHub

🔗 Use infinitive form for all task descriptions verbs by p8 · Pull Request #47215 · rails/rails

Railsコマンドの説明文の動詞を、Creates...のような三単現からCreate...のような原形に変更。

Petrik de Heus
同CHANGELOGより

参考: 週刊Railsウォッチ20230221: railsタスク説明文の動詞の表記を統一

🔗 Use config.credentials.* in credentials commands by jonathanhefner · Pull Request #47107 · rails/rails

bin/rails credentials:editなどのcredentialsコマンドが、config.credentials.content_pathconfig.credentials.key_pathの値を尊重するようになった(config/application.rbまたはconfig/environments/#{Rails.env}.rbで設定されている場合)。

変更前:

  • bin/rails credentials:editではRAILS_ENVが無視され、常にconfig/credentials.yml.encを編集する。

  • bin/rails credentials:edit --environment fooを実行するとconfig/credentials/foo.yml.encの作成や実行が可能だった。

  • config.credentials.content_pathまたはconfig.credentials.key_pathが設定されていても、bin/rails credentials:editでcredentialsを編集できなかった。credentialsを編集するには、bin/rails encrypted:edit path/to/credentials --key path/to/keyが必要だった。

変更後:

  • bin/rails credentials:editを実行すると、アプリが現在のRAILS_ENVで読み込むcredentialsファイルを編集するようになった。

  • bin/rails credentials:editは、config.credentials.content_pathconfig.credentials.key_pathの値を尊重する(config/application.rbまたはconfig/environments/#{Rails.env}.rbで設定されている場合)。

  • bin/rails credentials:edit --environment fooは、そのfoo環境向けのconfig.credentials.content_path未設定の場合config/credentials/foo.yml.encの作成・編集を行う。最終的に、そのfoo環境で読み込まれるcredentialsファイルが編集される。

Jonathan Hefner
同CHANGELOGより

参考: §10.1 独自のcredential -- Rails セキュリティガイド - Railsガイド

🔗 Add descriptions for non-Rake commands when running rails -h by p8 · Pull Request #46997 · rails/rails

rails -hで表示される非rake系コマンドに説明文を追加。

Petrik de Heus
同CHANGELOGより

▶実行例(クリックして展開)
$ bin/rails -h
Usage:
  bin/rails COMMAND [options]

You must specify a command. The most common commands are:

  generate     Generate new code (short-cut alias: "g")
  console      Start the Rails console (short-cut alias: "c")
  server       Start the Rails server (short-cut alias: "s")
  test         Run tests except system tests (short-cut alias: "t")
  test:system  Run system tests
  dbconsole    Start a console for the database specified in config/database.yml
               (short-cut alias: "db")
  plugin new   Create a new Rails railtie or engine

All commands can be run with -h (or --help) for more information.

In addition to those commands, there are:

about                              List versions of all Rails frameworks and the environment
app:template                       Apply the template supplied by LOCATION=(/path/to/template)...
app:update                         Update configs and some other initially generated files (or...
assets:clean                       Removes old files in config.assets.output_path
assets:clobber                     Remove config.assets.output_path
assets:precompile                  Compile all the assets from config.assets.paths
assets:reveal                      Print all the assets available in config.assets.paths
assets:reveal:full                 Print the full path of assets available in config.assets.paths
cache_digests:dependencies         Lookup first-level dependencies for TEMPLATE (like messages...
cache_digests:nested_dependencies  Lookup nested dependencies for TEMPLATE (like messages/show...
credentials:diff                   Enroll/disenroll in decrypted diffs of credentials using git
credentials:edit                   Open the decrypted credentials in `$VISUAL` or `$EDITOR` fo...
credentials:show                   Show the decrypted credentials
db:create                          Create the database from DATABASE_URL or config/database.ym...
db:drop                            Drop the database from DATABASE_URL or config/database.yml ...
db:encryption:init                 Generate a set of keys for configuring Active Record encryp...
db:environment:set                 Set the environment value for the database
db:fixtures:load                   Load fixtures into the current environment's database
db:migrate                         Migrate the database (options: VERSION=x, VERBOSE=false, SC...
db:migrate:down                    Run the "down" for a given migration VERSION
db:migrate:redo                    Roll back the database one migration and re-migrate up (opt...
db:migrate:status                  Display status of migrations
db:migrate:up                      Run the "up" for a given migration VERSION
db:prepare                         Run setup if database does not exist, or run migrations if ...
db:reset                           Drop and recreate all databases from their schema for the c...
db:rollback                        Roll the schema back to the previous version (specify steps...
db:schema:cache:clear              Clear a db/schema_cache.yml file
db:schema:cache:dump               Create a db/schema_cache.yml file
db:schema:dump                     Create a database schema file (either db/schema.rb or db/st...
db:schema:load                     Load a database schema file (either db/schema.rb or db/stru...
db:seed                            Load the seed data from db/seeds.rb
db:seed:replant                    Truncate tables of each database for current environment an...
db:setup                           Create all databases, load all schemas, and initialize with...
db:system:change                   Change `config/database.yml` and your database gem to the t...
db:version                         Retrieve the current schema version number
destroy                            Remove code generated by `bin/rails generate`
dev:cache                          Toggle development mode caching on/off
encrypted:edit                     Open the decrypted file in `$VISUAL` or `$EDITOR` for editing
encrypted:show                     Show the decrypted contents of the file
importmap:install                  Setup Importmap for the app
initializers                       Print out all defined initializers in the order they are in...
log:clear                          Truncate all/specified *.log files in log/ to zero bytes (s...
middleware                         Print out your Rack middleware stack
notes                              Show comments in your code annotated with FIXME, OPTIMIZE, ...
restart                            Restart app by touching tmp/restart.txt
routes                             List all the defined routes
runner                             Run Ruby code in the context of your application
secret                             Generate a cryptographically secure secret key (this is typ...
secrets:edit                       **deprecated** Open the secrets in `$VISUAL` or `$EDITOR` f...
secrets:show                       **deprecated** Show the decrypted secrets
sitemap:clean                      Delete all Sitemap files in public/ directory
sitemap:create                     Generate sitemaps but don't ping search engines
sitemap:install                    Install a default config/sitemap.rb file
sitemap:refresh                    Generate sitemaps and ping search engines
sitemap:refresh:no_ping            Generate sitemaps but don't ping search engines
standard                           Lint with the Standard Ruby style guide
standard:fix                       Lint and automatically make safe fixes with the Standard Ru...
standard:fix_unsafely              Lint and automatically make fixes (even unsafe ones
stats                              Report code statistics (KLOCs, etc) from the application or...
stimulus:install                   Install Stimulus into the app
stimulus:install:importmap         Install Stimulus on an app running importmap-rails
stimulus:install:node              Install Stimulus on an app running node
tailwindcss:build                  Build your Tailwind CSS
tailwindcss:clobber                Remove CSS builds
tailwindcss:install                Install Tailwind CSS into the app
tailwindcss:watch                  Watch and build your Tailwind CSS on file changes
test:all                           Run all tests, including system tests
test:channels                      Run tests in test/channels
test:controllers                   Run tests in test/controllers
test:db                            Reset the database and run `bin/rails test`
test:functionals                   Run tests in test/controllers, test/mailers, and test/funct...
test:generators                    Run tests in test/lib/generators
test:helpers                       Run tests in test/helpers
test:integration                   Run tests in test/integration
test:jobs                          Run tests in test/jobs
test:mailboxes                     Run tests in test/mailboxes
test:mailers                       Run tests in test/mailers
test:models                        Run tests in test/models
test:units                         Run tests in test/models, test/helpers, and test/unit
time:zones[country_or_offset]      List all time zones, list by two-letter country code (`bin/...
tmp:clear                          Clear cache, socket and screenshot files from tmp/ (narrow ...
tmp:create                         Create tmp directories for cache, sockets, and pids
turbo:install                      Install Turbo into the app
turbo:install:importmap            Install Turbo into the app with asset pipeline
turbo:install:node                 Install Turbo into the app with webpacker
turbo:install:redis                Switch on Redis and use it in development
version                            Show the Rails version
yarn:install                       Install all JavaScript dependencies as specified via Yarn
zeitwerk:check                     Check project structure for Zeitwerk compatibility

🔗 Show common commands when calling rails -h outside a Rails dir by p8 · Pull Request #46164 · rails/rails

rails -hが現在の状況に適したコマンドを表示するようになった。

従来は、Railsアプリケーション以外のディレクトリでrails -h(または単にrailsコマンド)を実行すると、rails newコマンドの実行オプションを表示していた。これでは、Railsでよく使われるコマンド一覧を見たいユーザーが戸惑う可能性がある。

そうではなく、rails -hを実行したら、共通のRailsコマンドについてはRailsアプリケーションディレクトリの中でも外でも常に表示すべき。

Railsアプリケーションディレクトリの中で見たいコマンドは、Railsアプリケーションディレクトリの外で見たいコマンドと異なるので、ヘルプのUSAGEファイルを分割して、最も状況に適したコマンドを表示するようにした。

Petrik de Heus
同CHANGELOGより

参考: 週刊Railsウォッチ20230207: rails -hをRailsディレクトリの外で呼んだ場合にも共通コマンドを表示するようになった

🔗 Add a default health controller by dhh · Pull Request #46936 · rails/rails

新規アプリケーションでRails::HealthController#showが追加され、/upにマッピングされるようになった。

ロードバランサーやアップタイムモニタは、アプリの稼働状況を知るための基本的なエンドポイントを必要としている。
このHealthControllerは、多くの状況で最初のエンドポイントとして役に立つ。

DHH
同CHANGELOGより

参考: 週刊Railsウォッチ20230207: RailsにデフォルトでHealthControllerが追加されるようになる

🔗 Only use HostAuthorization if configured by skipkayhil · Pull Request #46858 · rails/rails

config.hostsが空でない場合にのみHostAuthorizationミドルウェアを読み込むようになった。

Hartley McGuire
同CHANGELOGより

参考: 週刊Railsウォッチ20230131: 設定されていないHostAuthorizationミドルウェアを使わないようになった

🔗 Raise error on missing only unless by TooManyBees · Pull Request #43487 · rails/rails

before_actiononly:またはexceptフィルタオプションで参照しているアクションが存在しない場合にエラーを発生するようになった。これはデフォルトで有効になっているが、以下のコンフィグで変更可能。

# config/environments/production.rb
config.action_controller.raise_on_missing_callback_actions = false

Jess Bees
同CHANGELOGより

なお、厳密には7.1で生成したconfig/environments/のdevelopment.rbとtest.rbではこのコンフィグがtrueに設定されるようになります。デフォルトはfalseです。

参考: config.action_controller.raise_on_missing_callback_actions -- Rails アプリケーションを設定する - Railsガイド

参考: 週刊Railsウォッチ20230131: コールバックのonlyexceptオプションで指定したシンボルがない場合にエラーにするようになった

🔗 Use puma worker count equal to processor count in production by dhh · Pull Request #46838 · rails/rails

production環境で、Pumaのワーカー数を物理プロセッサ数に設定するようになった。
この値は、ENV["WEB_CONCURRENCY"]で変更することも、生成されたconfig/puma.rbファイルを直接変更することも可能。

DHH
同CHANGELOGより

参考: 週刊Railsウォッチ20230131: productionでPumaのワーカー数をプロセッサ数と同じになるようにする

🔗 Add default Dockerfiles by dhh · Pull Request #46762 · rails/rails

新規アプリに以下のDocker関連ファイルが追加されるようになった。

  • Dockerfile
  • .dockerignore
  • bin/docker-entrypoint

--skip-dockerオプションでこれらのファイル生成をスキップ可能。
生成されるDocker関連ファイルに手を加えてproduction環境へのデプロイに利用することを意図している。開発用のDockerファイルではない点に注意(開発用についてはDocked 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=<see config/master.key> app

このDockerイメージからRailsコンソールやランナーも実行可能。

$ docker run --rm -it -v app-storage:/rails/storage --env RAILS_MASTER_KEY=<see config/master.key> app console

Apple Silicon(M1)環境からAMDまたはIntel環境にデプロイするマルチプラットフォーム向けのイメージを作成し、user/appをDocker Hubにプッシュする場合のコマンド:

$ docker login -u <user>
$ docker buildx create --use
$ docker buildx build --push --platform=linux/amd64,linux/arm64 -t <user/image> .

DHH, Sam Ruby
同CHANGELOGより

rails/docked - GitHub

参考: 週刊Railsウォッチ20230125: RailsにDockerfileとdocked gemが追加された


なお、その後activerecord/test/storage/以下も.gitignoreに追加されました。

🔗 Allow assets:precompile to be run in a production build step without passing in RAILS_MASTER_KEY by dhh · Pull Request #46760 · rails/rails

ENV["SECRET_KEY_BASE_DUMMY"]を追加。
本物のRAILS_MASTER_KEYをビルドプロセスに渡さずにassets:precompileなどのタスクを実行可能にするため、生成されたsecret_key_baseをproduction環境で利用できるようにする。

Dockerfileレイヤでの利用例:

RUN SECRET_KEY_BASE_DUMMY=1 bundle exec rails assets:precompile

DHH
同CHANGELOGより

参考: 週刊Railsウォッチ20230125: productionでRAILS_MASTER_KEYを渡さなくてもassets:precompileを実行可能にした

🔗 Add missing descriptions for additional commands in Rails help by p8 · Pull Request #46163 · rails/rails

Railsのヘルプで表示されていなかったコマンド説明文をすべて表示するようになった。

従来は、rails helpのコマンド説明文の多くが表示されていなかった。
改修によって、rails -Tと同じコマンド説明文も表示されるようになった。

Petrik de Heus
同CHANGELOGより

🔗 Use storage/ instead of db/ for sqlite3 db files by dhh · Pull Request #46699 · rails/rails

rails newでstorage/ディレクトリを常に生成するようになった。
このstorage/ディレクトリは、恒久的なファイルや、コンテナをマッピングする単一のマウントポイントを確実に配置できるようにするためのもの。

そこで、SQLite3データベースファイルも今後はdb/ディレクトリではなく、このstorage/ディレクトリに置くことにした。db/ディレクトリは設定ファイルの置き場所であり、データの置き場所ではない。

DHH
同CHANGELOGより

参考: 週刊Railsウォッチ20221220: SQLite3のdbファイルはdb/ではなくstorage/に置くことにする

🔗 Disable Rails console IRB's autocompletion in production by default. by st0012 · Pull Request #46656 · rails/rails

production環境ではIRBのオートコンプリートをデフォルトで無効にするようになった。

このデフォルト設定はIRB_USE_AUTOCOMPLETE=trueでオーバーライドできる。

Stan Lo
同CHANGELOGより

この修正はRails 7.0.5でリリース済みです
参考: 週刊Railsウォッチ20230125: production環境のRailsコンソールでIRBのオートコンプリートがデフォルトで無効になった

🔗 Add AS::ParameterFilter.precompile_filters by jonathanhefner · Pull Request #46452 · rails/rails

config.precompile_filter_parametersを追加。

これはActiveSupport::ParameterFilter.precompile_filtersを利用するconfig.filter_parametersのプリコンパイルを有効にする。

フィルタの個数や種類にもよるが、フィルタをプリコンパイルすることでパフォーマンスの向上が期待できる。

config.load_defaults 7.1以降は、config.precompile_filter_parametersがデフォルトでtrueに設定される。

Jonathan Hefner
同CHANGELOGより

参考: config.precompile_filter_parameters -- Rails アプリケーションを設定する - Railsガイド

🔗 Add after_routes_loaded hook for Engines to trigger code after application routes have been loaded by shioyama · Pull Request #46539 · rails/rails

after_routes_loadedフックをRailsエンジンのRails::Railtie::Configurationに追加。
これはアプリケーションのルーティングが読み込まれた後で呼び出されるフックを追加する。

MyEngine.config.after_routes_loaded do
  # ルーティング読み込み後に実行しなければならないコード
end

Chris Salzberg
同CHANGELOGより

参考: config.after_routes_loaded -- Rails アプリケーションを設定する - Railsガイド

🔗 Scaffold destroy action returns status code 303 by t27duck · Pull Request #45383 · rails/rails

scaffoldで新規生成されるコントローラのdestroyアクションにstatus: :see_otherを追加するよう修正。

Tony Drake
同CHANGELOGより

この修正はRails 7.0.5でリリース済みです

🔗 Add Rails.application.deprecators by jonathanhefner · Pull Request #46049 · rails/rails

Rails.application.deprecatorsを追加。
今後アプリケーションのdeprecatorsはここで集中管理されるようになる。

個別のdeprecatorsをコレクションに追加したりコレクションから取り出したりできる。

Rails.application.deprecators[:my_gem] = ActiveSupport::Deprecation.new("2.0", "MyGem")
Rails.application.deprecators[:other_gem] = ActiveSupport::Deprecation.new("3.0", "OtherGem")

このコレクションのコンフィグメソッドは、コレクション内の全deprecatorsに影響する。

Rails.application.deprecators.debug = true

Rails.application.deprecators[:my_gem].debug
# => true
Rails.application.deprecators[:other_gem].debug
# => true

さらに、以下のようにコレクション内の全deprecatorssilenceブロック内でのみ抑制できる。

Rails.application.deprecators.silence do
  Rails.application.deprecators[:my_gem].warn    # => 警告を抑制
  Rails.application.deprecators[:other_gem].warn # => 警告を抑制
end

Jonathan Hefner
同CHANGELOGより

参考: 週刊Railsウォッチ20221025: Rails.application.deprecatorsが追加

🔗 Move dbconsole logic to Active Record connection adapter. by gmcgibbon · Pull Request #46093 · rails/rails

dbconsoleのロジックをActive Recordのコネクションアダプタに移動。

コネクションのロジックをコマンドオブジェクトに置くのではなく、データベースアダプタがコンソールセッションへの接続を担当すべき。

このパッチは #find_cmd_and_execをアダプタに移動し、インスタンス化せずにアダプタークラスを検索できる新しいAPIを公開する。

Gannon McGibbon, Paarth Madan
同CHANGELOGより

🔗 Add MessageVerifiers and MessageEncryptors classes by jonathanhefner · Pull Request #44179 · rails/rails

Rails.application.message_verifiersを追加。
これはアプリケーションでmessage verifierを設定・作成するときの中心となる。

これを利用することで、たとえば以下のように古いsecret_key_base値をローテーションできるようになる。

config.before_initialize do |app|
  app.message_verifiers.rotate(secret_key_base: "old secret_key_base")
end

以下のようにmessage verifierをライブラリ向けに事前に設定することも可能。

ActiveStorage.verifier = Rails.application.message_verifiers["ActiveStorage"]

Jonathan Hefner
同CHANGELOGより

🔗 Add ssl-mode option to dbconsole command and MySQLDatabaseTasks by p8 · Pull Request #46008 · rails/rails

dbconsoleコマンドでMySQLの--ssl-modeオプションをサポート。

データベースサーバーを識別するには、--ssl-modeオプションにVERIFY_CAまたはVERIFY_IDENTITYを設定する必要がある。従来、このオプションはdbconsoleコマンドで無視されていた。

Petrik de Heus
同CHANGELOGより

参考: 週刊Railsウォッチ20221011: dbconsoleコマンドとMySQLDatabaseTasksに--ssl-modeオプションを追加

🔗 Delegate application record generator description to orm hooked generator. by gmcgibbon · Pull Request #45975 · rails/rails

application_recordジェネレータのヘルプ説明文の表示を、ORMにフックされたジェネレータに委譲するようになった。

Gannon McGibbon
同CHANGELOGより

🔗 Show BCC field in mailer preview by the-spectator · Pull Request #45935 · rails/rails

BCC受信者が存在する場合はAction Mailerのプレビューに表示するようになった。

Akshay Birajdar
同CHANGELOGより

🔗 Extend routes --grep to also filter routes by matching against path by orhantoy · Pull Request #45874 · rails/rails

routes --grepがパスにもマッチするように拡張。

例:

$ bin/rails routes --grep /cats/1
Prefix Verb   URI Pattern         Controller#Action
   cat GET    /cats/:id(.:format) cats#show
       PATCH  /cats/:id(.:format) cats#update
       PUT    /cats/:id(.:format) cats#update
       DELETE /cats/:id(.:format) cats#destroy

Orhan Toy
同CHANGELOGより

参考: 週刊Railsウォッチ20220920: routes --grepでパスにマッチするルートをフィルタできるようになる

🔗 Better rails runner output for missing files by tekin · Pull Request #45875 · rails/rails

rails runnerでファイルがパスに存在しない場合のメッセージを改善。

Tekin Suleyman
同CHANGELOGより

🔗 Replace MutexHook by MonitorHook to allow reentrancy by casperisfine · Pull Request #45857 · rails/rails

config.allow_concurrency = falseを設定するとMutexではなくMonitorが使われるようになった。

これによって、config.allow_concurrencyが無効な場合であってもconfig.active_support.executor_around_test_caseを有効にできるようになった。

Jean Boussier
同CHANGELOGより

この変更はRails 7.0.4でリリース済みです

🔗 Add routes --unused option to detect extraneous routes. by gmcgibbon · Pull Request #45701 · rails/rails

routes --unusedオプションで未使用のルーティングを検出できるようになった。

例:

$ bin/rails routes --unused

Found 2 unused routes:

Prefix Verb URI Pattern    Controller#Action
  one GET  /one(.:format) action#one
  two GET  /two(.:format) action#two

Gannon McGibbon
同CHANGELOGより

参考: 週刊Railsウォッチ20220822: routes --unusedで冗長なルーティングを検出

🔗 Controller generator improvements by gmcgibbon · Pull Request #45627 · rails/rails

コントローラのジェネレータに、生成するジョブの親クラスを指定する--parentオプションを追加。

例:

bin/rails g controller admin/users --parent=admin_controllerを実行すると以下が生成される。

class Admin::UsersController < AdminController
  # ...
end

Gannon McGibbon
同CHANGELOGより

🔗 Support custom credentials templates by jonathanhefner · Pull Request #45544 · rails/rails

アプリのカスタム認証テンプレートをサポート。
rails credentials:editを実行すると、credentialsファイルが存在しない場合はlib/templates/rails/credentials/credentials.yml.ttでcredentialsファイルの生成を試みてからデフォルトのテンプレートにフォールバックする。

これにより、たとえばオープンソースのRailsアプリ(暗号化credentialsファイルがリポジトリに置かれていない)でも、ユーザーがアプリをインストールしたときにrails credentials:editを実行すれば、事前入力済みのカスタムcredentialsファイルを得られるようになる。

Jonathan Hefner
同CHANGELOGより

参考: 週刊Railsウォッチ20220719: credentialの改良2つ

🔗 Omit secret_key_base for dev and test credentials by jonathanhefner · Pull Request #45574 · rails/rails

利便性のため、新規に生成した環境ごとのcredentialsファイル(config/credentials/production.yml.encなど)に、config/credentials.yml.encと同様にsecret_key_baseが含まれるようになった。
ただしdevelopment環境とtest環境は対象外。

Jonathan Hefner
同CHANGELOGより

参考: 週刊Railsウォッチ20220725: production向けのcredentialファイル生成にのみsecret_key_baseを含めるよう修正

🔗 Improve generator implied option handling by jonathanhefner · Pull Request #45520 · rails/rails

アプリジェネレータの--minimalオプションで--no-*オプションを指定できるようになった。これにより、--minimalオプションに的確に機能を追加できる。

$ rails new my_cool_app --minimal
Based on the specified options, the following options will also be activated:

  --skip-active-job [due to --minimal]
  --skip-action-mailer [due to --skip-active-job, --minimal]
  --skip-active-storage [due to --skip-active-job, --minimal]
  --skip-action-mailbox [due to --skip-active-storage, --minimal]
  --skip-action-text [due to --skip-active-storage, --minimal]
  --skip-javascript [due to --minimal]
  --skip-hotwire [due to --skip-javascript, --minimal]
  --skip-action-cable [due to --minimal]
  --skip-bootsnap [due to --minimal]
  --skip-dev-gems [due to --minimal]
  --skip-system-test [due to --minimal]

...

$ rails new my_cool_app --minimal --no-skip-active-storage
Based on the specified options, the following options will also be activated:

  --skip-action-mailer [due to --minimal]
  --skip-action-mailbox [due to --minimal]
  --skip-action-text [due to --minimal]
  --skip-javascript [due to --minimal]
  --skip-hotwire [due to --skip-javascript, --minimal]
  --skip-action-cable [due to --minimal]
  --skip-bootsnap [due to --minimal]
  --skip-dev-gems [due to --minimal]
  --skip-system-test [due to --minimal]

...

Brad Trick and Jonathan Hefner
同CHANGELOGより

参考: 週刊Railsウォッチ20220711: rails newの暗黙のオプションの扱いを改善

🔗 Set skip_dev_gems to be a class_option by brtrick · Pull Request #45402 · rails/rails

アプリのジェネレータに--skip-dev-gemsオプションを追加。
web-consoleなどのdevelopment環境向けgemをGemfileに追加しないようにする。

Brad Trick
同CHANGELOGより

参考: 週刊Railsウォッチ20220704: development環境用gemのインストールをスキップするオプションを追加

🔗 Skip Active Storage and Action Mailer if Active Job is skipped by etiennebarrie · Pull Request #45354 · rails/rails

アプリのジェネレータでActive JobをスキップするとActive StorageとAction Mailerもスキップするようになった。

Étienne Barrié
同CHANGELOGより

この修正はRails 7.0.4でリリース済みです

🔗 Correctly check if frameworks are disabled when running app:update by etiennebarrie · Pull Request #45351 · rails/rails

スキップしてあったフレームワークの機能がapp:updateを実行したときに再インストールされないよう修正。

Étienne Barrié and Paulo Barros
同CHANGELOGより

この機能はRails 7.0.4でリリース済みです
参考: 週刊Railsウォッチ20220719: app:update実行時に機能がconfig/application.rbで無効になっているかをチェックするようになった

🔗 Delegate model generator description to orm hooked generator by gmcgibbon · Pull Request #45315 · rails/rails

モデルのジェネレータのヘルプ説明文の表示を、ORMにフックされたジェネレータに委譲するようになった。

Gannon McGibbon
同CHANGELOGより

🔗 Wrap rails runner in executor by casperisfine · Pull Request #44999 · rails/rails

rails runnerスクリプトをexecutor内部で実行するようになった。

これにより、rails runnerでエラーレポートやクエリキャッシュなどを使えるようになる。

Jean Boussier
同CHANGELOGより

🔗 Avoid booting in development then test for test tasks by etiennebarrie · Pull Request #44106 · rails/rails

テストタスクでアプリをtest環境で起動する前にdevelopment環境で起動しないようになった。

test:systemtest:modelsなどのRailsテストサブタスクを実行すると、rake経由でアプリが2回起動されていた。
修正後は、すべてのtest:*サブタスクがThorタスクとして定義され、直接test環境を読み込むようになった。

Étienne Barrié
同CHANGELOGより

参考: 週刊Railsウォッチ20220606: テスト系タスクでアプリが2回起動されるのを修正

🔗 Deprecate behaviour constant by gmcgibbon · Pull Request #45180 · rails/rails

Rails::Generators::Testing::Behaviour(英国スペル)を非推奨化。今後はRails::Generators::Testing::Behavior(米国スペル)を使うこと。

Gannon McGibbon
同CHANGELOGより

参考: 週刊Railsウォッチ20220606: 番外: behaviour->behavior

🔗 Rotate Default Logs on Each 100MB by berniechiu · Pull Request #44888 · rails/rails

config.log_file_sizeコンフィグでローカル環境およびtest環境のロガー上限サイズを設定できるようになった。

デフォルトは100 MB。

Bernie Chiu
同CHANGELOGより

参考: config.log_file_size -- Rails アプリケーションを設定する - Railsガイド

🔗 Enroll new apps in decrypted diffs of credentials by jonathanhefner · Pull Request #39686 · rails/rails

新規アプリのcredentials(config/credentials.yml.enc)のdiffを、デフォルトで復号した形でGitに登録するようになった。この振る舞いは、アプリジェネレータに--skip-decrypted-diffsフラグを渡すことでオフにできる。

Jonathan Hefner
同CHANGELOGより

参考: bin/rails credentials · Linyclar

🔗 Support declarative-style test name filters by jonathanhefner · Pull Request #44290 · rails/rails

bin/rails testコマンドでテスト名を宣言的に指定できるようになった。

これによって、以下のようなテストを宣言的なスタイルで実行できるようになる。

class MyTest < ActiveSupport::TestCase
  test "does something" do
    # ...
  end
end

以下のように宣言されたテスト名を指定できる。

$ bin/rails test test/my_test.rb -n "does something"

以下のようにテスト名を指定するときにメソッド名に展開しなくてもよくなる。

$ bin/rails test test/my_test.rb -n test_does_something

Jonathan Hefner
同CHANGELOGより

🔗 add --js alias to --javascript and --skip-js alias to --skip-javscript by dorianmariefr · Pull Request #43754 · rails/rails

rails new--jsオプションと--skip-javascriptオプションを追加。

  • --js: rails new --javascript ...のエイリアス。
    • -jと同じ(例: rails new --js esbuild ...
  • --skip-js: rails new --skip-javascript ...のエイリアス
    • -Jと同じ(例: rails new --skip-js ...

Dorian Marié
同CHANGELOGより

参考: §1.1 rails new -- コマンドラインツール - Railsガイド

🔗 Fix rails test command to handle leading dot slash by shouichi · Pull Request #45085 · rails/rails

rails test.付きの相対パスを渡せるようになった。

rails test ./test/model/post_test.rbで(全テストファイルではなく)単一ファイルのテストを実行するように修正。

Shouichi Kamiya and oljfte
同CHANGELOGより

🔗 Deprecate config.enable_dependency_loading · rails/rails@cbfe735

config.enable_dependency_loadingを非推奨化。

このフラグはclassicオートローダーの制約に対処するために使われていたものであり、現在は無効。この非推奨に対応するには、このコンフィグへの参照を削除するだけでよい。

Xavier Noria
同CHANGELOGより

参考: §3.2.16 config.enable_dependency_loading -- Rails アプリケーションを設定する - Railsガイド

🔗 Define config.reload to be !config.cache_classes by fxn · Pull Request #44870 · rails/rails

config.enable_reloadingというコンフィグ名を新たに定義。名前から直感的にわかりやすくするため、!config.cache_classesと動作が等しくなるように定義する。

今後は、config.enable_reloadingconfig.reloading_enabled?が推奨されるが、互換性のためconfig.cache_classesもサポートされる。

Xavier Noria
同CHANGELOGより

参考: §3.2.16 config.enable_reloading -- Rails アプリケーションを設定する - Railsガイド
参考: 週刊Railsウォッチ20220425: config.enable_reloadingを追加

🔗 Add yarn install into bin/setup when not using importmap by duduribeiro · Pull Request #44717 · rails/rails

bin/setupコマンドにJavaScript依存関係を追加。

esbuild、webpack、rolloutを使う場合はbin/setupyarn installを追加する。

Carlos Ribeiro
同CHANGELOGより

参考: 週刊Railsウォッチ20220404: importmapを使わない場合にbin/setupでyarnをインストールする

🔗 Use controller_class_path in Rails::Generators::NamedBase#route_url by pixeltrix · Pull Request #44670 · rails/rails

Rails::Generators::NamedBase#route_urlcontroller_class_pathを使うよう修正。

これによって、名前空間化されたコントローラを生成するときに--model-nameでトップレベルのモデルを指定すると、route_urlが正しいパスを返すようになる。

従来は以下のコマンドを実行すると、

$ bin/rails generate scaffold_controller Admin/Post --model-name Post

コントローラのアクションに付けられるコメントが以下のようになっていた。

# GET /posts
def index
  @posts = Post.all
end

修正後は以下のように正しいコメントが生成される。

# GET /admin/posts
def index
  @posts = Post.all
end

修正: #44662

Andrew White
同CHANGELOGより

🔗 Disable config.add_autoload_paths_to_load_path by default in Rails 7.1 by casperisfine · Pull Request #44133 · rails/rails

オートロードされたパスが$LOAD_PATHに追加されなくなった。

これは、手動のrequire呼び出しによる読み込みが不可能になったことを意味する。クラスやモジュールは参照可能。

bootsnapを使っていないアプリケーションでは、$LOAD_PATHのサイズが削減されてrequire呼び出しの速度が向上する。bootsnapを使っているアプリケーションでもbootsnapキャッシュのサイズが削減される。

Jean Boussier
同CHANGELOGより

参考: §5 $LOAD_PATH{#load_path} -- 定数の自動読み込みと再読み込み (Zeitwerk) - Railsガイド
参考: 週刊Railsウォッチ20220117: Rails 7.1からconfig.add_autoload_paths_to_load_pathがデフォルトで無効になる

🔗 Remove X-Download-Options default header by sabljak · Pull Request #43968 · rails/rails

デフォルトのX-Download-Optionsヘッダーを削除。

このヘッダーは、2022年に廃止されたInternet Explorerでしか使われておらず、Rails 7はInternet Explorerをフルサポートしていないので、このヘッダをデフォルトにすべきではない。

Harun Sabljaković
同CHANGELOGより

参考: Customizing the download experience (Windows) | Microsoft Learn
参考: 週刊Railsウォッチ20220117: デフォルトのヘッダーからX-Download-Optionsを削除

🔗 Change dockerfile from using Node 19 to match dev environment by rubys · Pull Request #46794 · rails/rails

Node.jsを利用するRailsアプリに.node-versionファイルを追加するようになった。

このファイルはNodeのバージョンマネージャで利用可能。
shadowspawn/node-version-usage: Document current usage of .node-version file

生成されたDockerfileでも同じバージョンのNodeが使われるようになる。

Sam Ruby
同CHANGELOGより

参考: 週刊Railsウォッチ20230207: Node.jsを使うRailsアプリに.node-versionファイルを追加してDockerfileで参照するようになった


以前の変更については7-0-stableのCHANGELOGを参照。

関連記事

Rails 7.1に入る主要な機能まとめ(1)update_attribute!、CTEサポートほか(翻訳)

Rails 7.1に入る主要な機能まとめ(2)error_highlight対応、routes --grepほか(翻訳)

Rails 7.1に入る主要な機能まとめ(3)Docker関連ファイル導入ほか(翻訳)


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。