なるようになるブログ

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

rails commit log流し読み(2017/01/01)

2017/01/01分のコミットです。

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


Merge pull request #27521 from prathamesh-sonpatki/mark-one-more-constant-as-private

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

Rails内部でだけ使用する定数であるGeneratedAssociationMethodsの可視性をprivateに変更しています。


[ci skip] Remove mention of GeneratedAssociationMethods

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

ActiveRecord::Associations moduleのdocから先ほどprivateにしたGeneratedAssociationMethods定数についての説明を削除しています。


[ci skip] Retouch some association wording.

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

ActiveRecord::Associations moduleのdoc内、Overriding generated methodsの項の言い回しの修正を行っています。


Merge pull request #27441 from koic/quoted_insert_version_sql

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

insert_versions_sqlメソッドでversionをtableにinsertする際に、テーブル名及びversionの値をquoteするよう修正しています。


[ci skip] Update Active Model copyright years.

activemodel/MIT-LICENSEactivemodel/lib/active_model.rbの修正です。

copyrightを2017に更新しています。


Update schema cache doc in guides/command_line

rails guideのThe Rails Command Lineの修正です。

bin/rails --helpコマンドのexmapleでdb:schema:cache:clearタスク、、db:schema:cache:dumpタスクの表示が実際のヘルプの内容と異なる箇所があったのを修正しています。


Dump array subtype options correctly

activerecord/lib/active_record/connection_adapters/postgresql/oid/array.rbの修正です。

DBにPostgreSQLを使用している場合に、schema dumper がprecision及びscaleオプションの情報を正しくdumpしないバグがあったのを修正しています。


Prevent command name being printed twice.

railties/lib/rails/command/base.rbの修正です。

railsコマンドのhelpを表示した際に、同じ内容が複数回表示されてしまうバグがあったのを修正しています。


Match Thor's desc signature.

railties/lib/rails/command/base.rbの修正です。

Rails::Command::Base.descメソッドの引数にoptionsを追加しています。Thorのdescメソッドのシグネチャと合わせる為。


Extract casted_true/casted_false for Type::ImmutableString

activemodel/lib/active_model/type/immutable_string.rbactiverecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rbの修正です。

Type::ImmutableStringクラスでtrue、falseを表す値の取得をメソッド経由(casted_truecasted_false)で行うよう修正しています。

Type::ImmutableStringクラスのその子クラスの違いはbooleanを表す値の違いだけで、その値の取得をメソッドに切り出すこ事、子クラスではそのメソッドのオーバーライドだけをすれば良くて済む為、との事です。が、後ほどRevertされています。


Refactor CollectionAssociation#ids_reader

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

ActiveRecord::Associations::CollectionAssociation#ids_readerメソッドのリファクタリング(不要なメソッド呼び出しの削除)を行っています。


Change timestamp_attributes_for_{create,update} from symbol to string

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

timestamp_attributes_for_createメソッド及びtimestamp_attributes_for_createメソッドでattributesをSymbolで保持していたのをStringで保持するよう修正、及びファイルの先頭にfrozen_string_literal: trueを追加しています。

Symbolで保持していたものの、実際使用うする際はto_sで毎回Stringに変換しており、不要なオブジェクトの生成が発生してしまっていた為、frozen Stringとして扱うようにしたとの事です。


remove unnecessary remove_file

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

delete_action_mailer_files_skipping_action_mailerメソッドから不要なapp/mailers/application_mailer.rbファイルの削除処理を削除しています。同メソッド内でapp/mailersディレクトリ自体を削除している為。


add bin/test script for railties

railties/bin/testの修正です。

railtiesのテストにtest runnerを使用する為のbin/testスクリプトを追加しています。


Remove bin/yarn if yarn is skipped, tidy up tests

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

rails newする際に--skip-yarnオプションを指定した場合、bin/yarnスクリプトは生成しないよう修正しています。


Fix Symbol#duplicable? for Ruby 2.4.0.

activesupport/lib/active_support/core_ext/object/duplicable.rbの修正です。

Symbolがdup出来るかどうかのチェックにStringをSymbolに変換するdupする、というパターンを追加しています。

class Symbol
   begin
-    :symbol.dup
+    :symbol.dup # Ruby 2.4.x.
+    'symbol_from_string'.to_sym.dup # Some symbols can't `dup` in Ruby 2.4.0.

Ruby 2.4.0で上記のようなパターンでdupが出来ない為、との事です。

irb(main):001:0> :symbol.dup
=> :symbol
irb(main):002:0> 'symbol_from_string'.to_sym.dup
TypeError: allocator undefined for Symbol
    from (irb):2:in `dup'
  from (irb):2

Rubyのtrunkでは直っているとの事です。


Revert "Merge pull request #27528 from kamipo/extract_casted_booleans"

Type::ImmutableStringクラスでtrue、falseを表す値の取得をメソッド経由(casted_truecasted_false)で行うよう修正した、Extract casted_true/casted_false for Type::ImmutableStringをrevertしています。

この対応内容では、元々ImmutableStringクラスが意識する必要が無かったがMysqlStringクラスの存在を意識する必要が出てきてしまい、良くないだろう、という事でrevertされたようです。