なるようになるブログ

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

rails commit log流し読み(2020/06/01)

2020/06/01分のコミットです。

CHANGELOGにのったコミットは以下の通りです。

activerecord/CHANGELOG.md


Fix the doc for strict_loading! [ci skip]

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

strict_loading!メソッドのdoc内のexampleコードでメソッドの使い方に誤りがあったのを修正しています。


Improve clarity of callback update warning [ci skip]

rails guideのActive Record Callbacksの修正です。

Available Callbacksの項にあるcallback内でのattributeの更新についての説明の言い回しを修正しています。


Needlessly tight dependency spec

activesupport/activesupport.gemspecの修正です。

minitestのバージョン指定が5系に制限していたのを、5.1以上に修正しています。


Reflect the permissive float in the lock file

Gemfile.lockの修正です。

先のgemspecの更新の際にGemfile.lockの更新が漏れていたのを修正しています。


Use statement cache for find_by with aliased attribute

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

find_byにalias attributeを指定した際に、statement cacheを使用するよう修正しています。


Fix test_statement_cache_with_find_by failure

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

statement cace keyに誤ってSymbolを使っている箇所があったのを、Stringを使用するよう修正しています。


Merge pull request #39489 from kamipo/deprecate_passing_ar_object_to_quote

activerecord/lib/active_record/connection_adapters/abstract/quoting.rbの修正です。

Active Recordのobjectを直接quote / type_castに渡すのがdeprecateになりました。

以前あったquoting処理の為のメソッドで、現在Active Recordのobjectを渡して使用する必要は無い為。


Add ActiveRecord::Base.strict_loading_by_default and ActiveRecord::Base.strict_loading_by_default=.

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

strict_loading_by_defaultをmodel毎に指定出来るよう対応しています。


Fix minitest version constraints in Gemfile.lock

Gemfile.lockの修正です。

Reflect the permissive float in the lock fileGemfile.lockの更新が正しく行われてなかったのを修正しています。


Add missing new framework defaults for 6.1 [ci skip]

rails guideのConfiguring Rails Applicationsの修正です。

Results of config.load_defaultsの項に6.1で追加されたconfigの説明を追加しています。


Allow attribute aliases for timestamp magic columns

Active Recordの修正です。

timestamp magic columns(updated_atcreated_at等)のalias attributeだとcache keyの生成等各種処理が正しく動作しなかったのを修正しています。


Merge pull request #39494 from jonathanhefner/pathparser-lazy-regex

actionview/lib/action_view/template/resolver.rbの修正です。

PathParserのpath regexのbuild処理を、実際に使用する際に行うよう修正しています。

元々はクラス初期化時に処理を行っていたのですが、それだとAction View load後に追加されたhandlerの処理が正しく行えない為。


Added link to infosec.mozilla.org under the security guide.

rails guideのSecuring Rails Applicationsの修正です。

Additional Resourcesの項に、Mozilla's Web Security Guidelinesへのリンクを追加しています。

rails commit log流し読み(2020/05/31)

2020/05/31分のコミットです。

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


Extract id_for_database in the AR object

Active Recordの修正です。

id_for_databaseメソッドをPrimaryKeyに切り出しています。元々はconnection moduleで処理が行われていたのですが、connectionでやるべき処理では無いため。


Fix test name typo

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

テスト名と実際にテストしている内容が一致していなかったのを修正しています。


Clarify docs about strict loading and add a test case for strict_loading!

Active Recordの修正です。

strict_loading? / strict_loading!メソッドにdocを追加、及び、strict_loading!メソッドのテストを追加しています。

rails commit log流し読み(2020/05/30)

2020/05/30分のコミットです。

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


Add missing # in wrap_parameters RDoc

actionpack/lib/action_controller/metal/params_wrapper.rbのdocの修正です。

wrap_parametersメソッドのdoc内のexampleコードのコメント部分に#が不足していたのを修正しています。


Add test for HTML format fallback from JS template

actionview/test/template/render_test.rbの修正です。

JS templateをrenderする際、HTMLフォーマットにフォールバックする事を確認するテストを追加しています。


Don't inline run webpacker:install on rails new

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

rails newwebpacker:installを実行する際にinlineで実行しないよう修正しています。masterをcloneしたリポジトリでinlineで実行するとエラーになってしまう為。

rails commit log流し読み(2020/05/29)

2020/05/29分のコミットです。

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


Freeze many read only ModelSchema properties

activerecord/lib/active_record/connection_adapters/schema_cache.rbactiverecord/lib/active_record/model_schema.rbの修正です。

read onlyなmodel schemaのpropertiesにfreezeを指定するよう修正しています。


Make signed_id_verifier_secret lazily evaluated

activerecord/lib/active_record/railtie.rbactiverecord/lib/active_record/railtie.rbの修正です。

Active Recordのsigned idで使用するsecretの生成処理を遅延評価するよう修正しています。

secret key baseが設定される前に実行されてエラーになるのを避ける為。


Refactor build_where_clause to avoid extra allocation and code duplication

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

build_where_clauseメソッドで不要なオブジェクトの生成を行わないようリファクタリングしています


association in TableMetadata is not association but reflection

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

TableMetadataクラスでreflectionをassociationという変数名で保持していたのをreflectionに修正しています。


Support type casting for grandchild's attributes

Active Recordの修正です。

grandchildのattributesのtype castも行われるよう修正しています。


Allow composed_of conditions to be unscoped

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

composed_ofのconditionをunscope出来るよう修正しています。


Prefer no allocation start/end_with? over String#[] ==

String#[] ==を使用して値のチェックをしていた箇所を、start_with? / end_with?を使用するよう修正しています。


Allow where with through association to be expanded condition

activerecord/lib/active_record/relation/predicate_builder.rbactiverecord/lib/active_record/table_metadata.rbの修正です。

whereに指定したthrough associationがexpanded conditionになるよう修正しています。


Reset statement cache for association if table_name is changed

Active Recordの修正です。

table nameが変更された場合、statement cacheをresetするよう修正しています。


Don't mark issues on a milestone as stale

.github/stale.ymlの修正です。

milestoneが指定されているissueは自動でcloseしないようProbotの設定を修正しています。

rails commit log流し読み(2020/05/28)

2020/05/28分のコミットです。

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


Override clear_cache in custom path resolver

actionview/test/actionpack/controller/view_paths_test.rbの修正です。

custom path resolverのテストでclear_cacheメソッドをオーバーライドするよう修正しています。

テスト実行時にclear_cacheメソッドが実行されてしまう、かつ、ActionView::PathResolverに定義されているclear_cacheメソッドだとエラーになってしまう為。


Set retry_jitter to 0.0 for upgraded applications

activejob/lib/active_job/exceptions.rbの修正です。

ActiveJob::Base.retry_jitterのデフォルト値が0.0に変更しています。6.1からアップグレードしたアプリの挙動が変わらないようにする為。


Make index options to kwargs

Active Recordの修正です。

migrationのindexオプションをキーワード引数で受け取るよう修正しています。


Make remaining migration options to kwargs

Active Recordの修正です。

migrationのオプションを全てキーワード引数で受け取るよう修正しています。


merge doesn't allow to overwrite partially matching nodes

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

mergeで部分的に一致したnodeをオーバーライドは行わないよう修正しています。


Update assert_redirected_to docs [ci skip]

actionpack/lib/action_dispatch/testing/assertions/response.rbのdoc、及び、rails guideのTesting Rails Applicationsの修正です。

assert_redirected_toメソッドのdocにoptionsに指定された値にpartially matchする旨説明が記載されていたのですが、実際はoptionsの値にはpartially matchしないので該当の説明を削除しています。


Merge pull request #39344 from jonathanhefner/guide-form_helpers

rails guideのAction View Form Helpersの修正です。

formについて説明している箇所でform helperメソッドを使うよう説明を修正、変数名を適切な名前に修正、等を行っています。


Fix nil signed/encrypted cookie value when value is stored as false

actionpack/lib/action_dispatch/middleware/cookies.rbの修正です。

encrypted/signed cookiefalseが格納されていた場合に、値取得時にnilになってしまうバグがあったのを修正しています。


Merge pull request #39453 from dylanahsmith/transaction-return-no-raise

Active Recordの修正です。

Deprecate committing a transaction exited with return or throw (#29333)で、transaction block内でreturnbreakthrowを使用するのがdeprecaeになったのですが、このdeprecate処理を、transaction内でデータの書き込みが行われた場合のみdeprecateメッセージを表示するよう修正しています。

with_lock do
  return if some_crtieria_met?

  # do work
end

上記のように、transaction block内でearly returnした場合にメッセージが表示されないようにする為。


ActiveStorage::Attachment#signed_id must return a signed blob ID

activestorage/app/models/active_storage/attachment.rbの修正です。

url helperの引数にblobを指定した場合に、誤ったURLが生成されてしまうバグがあったのを修正しています。

rails commit log流し読み(2020/05/27)

2020/05/27分のコミットです。

CHANGELOGにのったコミットは以下の通りです。

actionview/CHANGELOG.md


Merge pull request #39437 from vinistock/remove_dup_from_set_content_type

actionpack/lib/action_dispatch/http/response.rbの修正です。

Request#set_cotent_typeメソッドで指定されたcontent typeをdupしていたのを、String#+@を使用してfreeze済みの場合のみ複製を使用するよう修正しています


Remove dup from post body for forcing encoding (#39438)

actionpack/lib/action_dispatch/http/request.rbの修正です。

Request#bodyメソッドでraw_postdupしていたのを、String#+@を使用してfreeze済みの場合のみ複製を使用するよう修正しています


Fix "warning: instance variable @klass not initialized"

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

Rubyのwarning(warning: instance variable @Klass not initialized)が出ていたのを対応しています。


Prefer string interpolation over direct mutation

actionpack/lib/action_dispatch/http/response.rbの修正です。

Request#set_cotent_typeメソッドでstring interpolationを使用して、そもそもそ指定されたcontent typeの状態は変更しないよう修正しています。


No need to extend ActionController::Caching by ActiveSupport::Autoload

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

使用していないActiveSupport::Autoloadを削除しています。


A few action_controller docs corrections

actionpack/lib/action_controller/metal/implicit_render.rbactionpack/lib/action_controller/metal/strong_parameters.rbのdocの修正です。

エラークラス名、及び、config名をタイポしていたのを修正しています。


Merge pull request #39060 from alipman88/fix_cache_fragment_digests

Action Viewの修正です。

cache fragment keyを生成する際に、関連するtemplateを全て含むよう修正しています。

<!-- views/pages/home.html.erb -->
<%= render layout: "wrapper" do %>
  <%= cache @post %>
  <!-- cache fragment name: ["pages/_wrapper:3f4bbb56698f60f9616533df83be7694", #<Post id: 1, …>] -->
    HOME
  <%= end %>
<%= end %>
<!-- views/pages/about.html.erb -->
<%= render layout: "wrapper" do %>
  <%= cache @post %>
  <!-- cache fragment name: ["pages/_wrapper:3f4bbb56698f60f9616533df83be7694", #<Post id: 1, …>] -->
    ABOUT
  <%= end %>
<%= end %>

上記のように、違う親テンプレート内で同じcache fragment keyが生成されてしまうのを避ける為。


Fix flaky assert queries tests

Active Recordのテストの修正です。

assert_no_queriesを使用していた箇所をassert_queries(0)に修正しています。

schema loadのqueryが実行された事によりテストがコケてしまう事があり、それを避けるため。


rewhere allow to overwrite non-attribute nodes

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

rewhereでnon-attribute nodeを上書き出来るよう対応しています


Merge pull request #39361 from jhawthorn/path_parser

Action Viewの修正です。

templateのresolve処理を、prefix, partial, variant, locale, format, variant, と handlerから行うResolver::PathParserクラスを追加しています。

元々上記パラメータを元にresolve処理は行われていたのですが、handlersやformatsが未指定の場合の挙動が怪しかったりしており、より正確にresolve処理が行われるようになっています。

rails commit log流し読み(2020/05/26)

2020/05/26分のコミットです。

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


Fix typo

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

form_withメソッドのexampleコードで、attribute名が誤っていたのを修正しています。


Fix preloading for polymorphic association with custom scope

activerecord/lib/active_record/associations/preloader/association.rbactiverecord/lib/active_record/reflection.rbの修正です。

polymorphic association + custom scopeのpreloadが動作するよう修正しています。


Fix Active Storage behavior on record dup

activestorage/lib/active_storage/attached/model.rbの修正です。

Active Storageのrecordをdupした際に、dupしたオブジェクトで元のオブジェクトと同じattachmentを参照していたのを、参照しないよう修正しています。


Merge pull request #39417 from roramirez/early-hints-no-content

actionpack/lib/action_dispatch/http/response.rbの修正です。

no contentなHTTP Statusの一覧に103(Early Hints)を追加しています。


Refactor remove_columns inverting to return a flat invert command

activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rbactiverecord/lib/active_record/migration/command_recorder.rbの修正です。

remove_columnsのinvert処理で、invert commandを返すようリファクタリングしています。