なるようになるブログ

読書感想文かrailsについてかrubyについてか

rails commit log流し読み(2023/02/23)

2023/02/23分のコミットです。

CHANGELOGへの追加はありませんでした。


Merge pull request #47431 from skipkayhil/make-shared-three-tier-aware

railties/lib/rails/application/configuration.rbの修正です。

database.ymlshared sectionで3層の値を設定した場合エラーになっていたのを、3層の値の共有まで行えるよう修正しています。

shared:
  one:
    migrations_path: "db/one"
  two:
    migrations_path: "db/two"

development:
  one:
    adapter: sqlite3
  two:
    adapter: sqlite3

production:
  one:
    adapter: mysql2
  two:
    adapter: mysql2

上記のような設定があった場合に、one/twoそれぞれにsharedセクションのmigrations_pathが反映されるようになっています。


Merge pull request #47454 from gmcgibbon/original_fullpath_in_controller_tests

actionpack/lib/action_controller/test_case.rbの修正です。

controller testでORIGINAL_FULLPATH headerを設定するよう修正しています。use filtered_path in action_controller event payloads instead of fullpathの対応の影響で、テストで元々のfull pathを取得する方法が無くなってしまい、再度full pathを取得出来るようにする為。


Do not install node directly in /usr/local

railties/lib/rails/generators/rails/app/templates/Dockerfile.ttの修正です。

node-buildのインストール先を/usr/localから/usr/local/nodeに変更しています。node-buildはインストール処理時にディレクトリをクリーンアップしてしまい、/usr/localだとnodeと関係ないファイルまで削除されてしまう為。


Fix output in tests

activerecord/test/cases/serialized_attribute_test.rbの修正です。

テスト実行時に不要なmigrationの出力が出ないようActiveRecord::Migration.verboseにfalseを設定するよう修正しています。


Dockerfile: give precedence to the node installed via node-build

railties/lib/rails/generators/rails/app/templates/Dockerfile.ttの修正です。

node-buildでインストールしたnodeが最初にロードされるようpathの設定を変更しています。node-buildでインストールしたのは違うnode-gypがインストールされている場合に、古いそちらが実行されてしまうのを避ける為。


Allow to define the default column serializer

Active Recordの修正です。

columnのserializeに使われるserializerのデフォルトがYAML serializer固定だったのを、任意のserializerを指定出来るよう修正しています。YAMLは性能とセキュリティ両方に問題がある為との事。デフォルトのserializerを変更したい場合、config.active_record.default_column_serializerに値を指定すれば良いようになっています。合わせて、serializeメソッドにclass及びcoderをpositional argumentとして渡すのをdeprecatedにしています。今後は、どちらもキーワード引数(typecoder)で指定する必要があります。


[Tests only] Add coverage for preloading composite has_many through associations

activerecord/test/cases/associations/eager_test.rbactiverecord/test/cases/associations_test.rbの修正です。

composite query_constraintsが指定されているhas_many through associationをpreloadした場合に正しくロード出来る事を確認するテストを追加しています。


Fix a couple typos and revise sentence on new column serializer docs

activerecord/lib/active_record/attribute_methods/serialization.rbのdoc、及び、rails guideのConfiguring Rails Applicationsの修正です。

doc内のタイポ、及び、言い回しの修正を行っています。


Improve wording on eager_load and preload AR docs [ci skip]

activerecord/lib/active_record/relation/query_methods.rbのdocの修正です。

eager_load及びpreloadのdoc内の言い回しの修正を行っています。


Clarify paragraph pointing to MDN docs on script async/defer

actionview/lib/action_view/helpers/asset_tag_helper.rbのdocの修正です。

javascript_include_tagメソッドのdoc内、defer、及び、asyncオプションについて説明している箇所の言い回しを修正しています。


Fix parsing ruby version for Dockerfile packages

railties/lib/rails/generators/app_base.rbの修正です。

Dockerfileで使用するpackageを定める際のRubyのバージョンチェック処理が正しく行われてなかったのを修正しています。


Dir.glob result must be sorted

rails guideのGetting Started with Enginesの修正です。

Overriding Models and Controllersの項にあるoverrideするファイルの取得処理のexampleで、Dir.globで取得したファイルをsortしてからloadするよう修正しています。Ruby 2.7までだとDir.globの結果はsortされておらず、ファイルのloadの順番が不定になってしまう為。


Fix deprecation warnings emitted by serialized

activerecord/test/cases/serialized_attribute_test.rbの修正です。

Allow to define the default column serializer でdeprecateになったserializeメソッドのpositional argumentを使用している箇所が残っていたのを修正しています。


Sort the results of Dir.glob [ci skip]

rails guideのClassic to Zeitwerk HOWTOの修正です。

Dir.glob result must be sortedと同様に、Dir.globで取得したファイルをsortしてから処理を行うよう修正しています。


Remove Copyright years (#47467)

Copyrightから年の表記を削除しています。特に必要な情報でもなく、毎年更新するのが手間な為。


Avoid "comparison of Gem::Version..." error in Ruby < 3.1

activerecord/lib/active_record/coders/yaml_column.rbの修正です。

Gem::VersionとStringを比較していた箇所があったのを、Gem::Version同士の比較処理を行うよう修正しています。Gem::VersionとStringの比較処理は古いrubygemだとエラーになる為。


Merge pull request #47468 from skipkayhil/only-require-irb-when-unconfigured

railties/lib/rails/commands/console/console_command.rbの修正です。

ファイルの先頭で行っていたirbのrequire処理を、実際に使用する際にrequireするよう修正しています。console gemにはirb以外のgemも使え(e.g. pry)、そういう場合にはirbのロードは不要な為。