この期間の CHANGELOG.md
へのコミットは11件。
railtiesに関して3件、ActiveStorageに関して4件、ActiveRecordに関して1件、ActionViewに関して1件、ActionPackに関して2件。
多いすね。
railties
各環境の設定ファイルで autoload_paths
, autoload_once_paths
, eager_load_paths
を指定できるようになった
コミット: registers 43863bf in the CHANGELOG [skip ci] · rails/rails@76bafb0
実装の中身は let environments configure load-related paths · rails/rails@43863bf これ。
このコミットは CHANGELOG に書いとくね〜 というやつ。
config/environments/*.rb
にこんな感じで書けば良い
# In config/application.rb, for example. require "#{Rails.root}/lib/my_app/config" # In config/environments/development.rb, for example. config.foo = MyApp::Config.foo
引用: registers 43863bf in the CHANGELOG [skip ci] · rails/rails@76bafb0
Rails.application.config_for
の戻り値に対して、文字列キーでのアクセスを禁止した
コミット: Remove deprecated non-symbol access to nested config_for hashes · rails/rails@e5e9c55
この修正前は deprecated
になっていた。
シンボルキー以外でアクセスすると warning が出る。
ActiveSupport::Deprecation.warn(<<~MESSAGE.squish) Accessing hashes returned from config_for by non-symbol keys is deprecated and will be removed in Rails 6.1. Use symbols for access instead. MESSAGE
引用: Remove deprecated non-symbol access to nested config_for hashes · rails/rails@e5e9c55
この修正後はシンボルキーのみでアクセスできるようになる。
どうしても文字列キーでアクセスしたければ with_indifferent_access
を使えば?みたいな話も書いてある。
shared_config
を deep_merge
するようにした
コミット: Add CHANGELOG entry for 4d858b3f2a · rails/rails@2b17c11
このようなyamlがあった場合、
# config/example.yml shared: foo: bar: baz: 1 development: foo: bar: qux: 2
引用: Add CHANGELOG entry for 4d858b3f2a · rails/rails@2b17c11
config_for
を使うと baz
消えてしまっていた。baz
が消えないように修正されている。
# Previously Rails.application.config_for(:example)[:foo][:bar] #=> { qux: 2 } # Now Rails.application.config_for(:example)[:foo][:bar] #=> { baz: 1, qux: 2 }
引用: Add CHANGELOG entry for 4d858b3f2a · rails/rails@2b17c11
deep_merge
に関してはこちら。
ActiveStorage
Variant#service_url
と Preview#service_url
が非推奨になり、 #url
が推奨になった
コミット: Deprecate `service_url` in favour of `url` · rails/rails@235f263
「Blobと一貫性を持たせようぜ」的なことが書いてあったので過去のコミットを掘り出した。
Permanent URLs for public storage blobs · rails/rails@feab703
Rails CHANGELOG "2019-10-07".."2019-10-13" - tanaken’s blog で紹介していた。
このときも #service_url
を非推奨にして #url
を推奨にしているので、合わせようぜ〜という話。
Blob の variant を DB に保存するようにした
コミット: Track Active Storage variants in the database · rails/rails@7d0327b
ActiveStorage::Blob::Representable
でDBを使っているなら ActiveStorage::VariantWithRecord
を使うように修正されている
def variant(transformations) if variable? variant_class.new(self, transformations) else raise ActiveStorage::InvariableError end end # 中略 private def variant_class ActiveStorage.track_variants ? ActiveStorage::VariantWithRecord : ActiveStorage::Variant end
抜粋: rails/representable.rb at 7d0327bbbf9fdb1f7f988ebb4e86649a776d1c65 · rails/rails
PublicDiskController
を削除し DiskController
に統一した
コミット: Use DiskController for both public and private files · rails/rails@fbb83d7
DiskService
で作られたURLに service_name
フィールドを追加することで、DiskController
は複数のサービスを処理できるようになっている。
DiskService
のクエリパラメータのうち、disposition
と content_type
は未使用だったので削除した
コミット: Remove query params in DiskService · rails/rails@2e15092
これもリファクタリング。
ActiveRecord
connect_to メソッドにキーワード引数 database を渡すと warning が出るようにした
コミット: Deprecate `database` kwarg from `connected_to` without replacement · rails/rails@254ba46
コミットメッセージによれば、キーワード引数 database をシャーディング(データベースを水平方向に分割すること)の用途で使おうとし、それに関する多くのバグレポートがあったとのこと。で、検討の結果このキーワード引数 database は一旦削除することにしたとのことで、今回 deprecated になった。
シャーディングをサポートする機能を追加するプランはあるらしい。
いまこのキーワード引数 database があるとなんかいろいろしんどいんだろうなぁ。バグレポートを無視するわけにもいかないだろうし。
ActionView
TagBuilder
で条件による値の出し分けをできるようにした
コミット: Add support for conditional values to TagBuilder · rails/rails@f1c63d8
修正前はこう書かないと行けなかったところを
content_tag( "My username", class: "always #{'sometimes' if current_user.special?} another" )
引用: Add support for conditional values to TagBuilder by joelhawksley · Pull Request #37872 · rails/rails
こう書けるようにした
content_tag( "My username", class: ["always", "another", { 'sometimes' => current_user.special? }] )
引用: Add support for conditional values to TagBuilder by joelhawksley · Pull Request #37872 · rails/rails
ActionPack
system test の driver オプションを non-headless ブラウザ用の selenium driver に渡すようにした
コミット: forward system test driver options configured · rails/rails@769188e
コミットメッセージを見る限りそんな感じ。コードベースではあんまり理解できてない。
config/routes.rb
の中で外部のroutesファイルをロードできるようにした
コミット: Bring back feature that allows loading external route iles: · rails/rails@33bf253
使い方はこんな感じ。
draw
メソッドが生えている。
# config/routes.rb Rails.application.routes.draw do draw(:admin) end # config/routes/admin.rb get :foo, to: 'foo#bar'
引用: Bring back feature that allows loading external route iles: · rails/rails@33bf253
ルーティングがたくさんあるアプリケーションだと有用そう。
コミットメッセージによると2012年にこの機能はあったんだけど、リバートされていたとのこと。
Revert "Allow loading external route files from the router" · rails/rails@5e7d6bb
やっぱり便利っぽいから入れようぜ、的な議論があったらしい。