なるようになるブログ

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

rails commit log流し読み(2018/11/20)

2018/11/20分のコミットです。

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

actionview/CHANGELOG.md

actionmailer/CHANGELOG.md


allow right to left styling of docs (#3)

rails guideの修正です。

guideのテキストをを右から左に表示する為のcssを追加しています。デフォルトでは当然使われず、RTL環境変数に値が指定されている場合のみ使用されるようになっています。

PRに貼られている画像を見る限り、恐らくguideをアラビア語(?)に翻訳する為、のようです。

48672676-916c5e00-eb41-11e8-9bd8-c1bcb85ceb1d.png (2880×1498)

48672680-9c26f300-eb41-11e8-83be-4a478d677bb0.png (2644×1626)


Merge pull request #34476 from y-yagi/fix_no_method_error_in_parallelization

activesupport/lib/active_support/testing/parallelization.rbの修正です。

parallel testsでテスト結果がDRb::DRbUnknownになった場合(テスト実行側ではmarshal出来ていたがテスト結果をまとめるサーバ側でunmarshal出来ない場合)に、 テスト結果表示時にNoMethodErrorでエラーになってしまっていたのを、テスト結果が正しく表示されるよう修正しています。


Merge pull request #34410 from gmcgibbon/test_support_windows

activesupport/lib/active_support/notifications/instrumenter.rbactivesupport/lib/active_support/testing/parallelization.rbの修正です。

Windows向けのサポートとして、下記を行っています。

  • parallel testsで強制的にdrb/unixをrequireしていたのをWindowsの場合はrequireしないよう修正(Windowsだとdrb/unixをrequireするとエラーになる為)
  • デフォルトで生成されるtest/test_helper.rbWindowsの場合、parallel testのworkerにスレッドを使用するよう修正(Windowsだとプロセスが使用出来ない為)
  • InstrumenterWindowsの場合はProcess::CLOCK_PROCESS_CPUTIME_IDを使用しないよう修正

Merge pull request #34453 from bogdanvlviv/exercise-connected_to-and-connects_to

activerecord/lib/active_record/connection_handling.rbactiverecord/test/cases/connection_adapters/connection_handlers_multi_db_test.rbの修正です。

ActiveRecord::Base.connected_toの戻り値がconnectionのArrayであることを確認するテスト、及び、connected_todatabaserole引数両方指定した場合にエラーになる事を確認するテストを追加しています。


Merge pull request #34482 from jacobherrington/chore/add-comments-to-templates

.github/issue_template.md.github/pull_request_template.mdの修正です。

GitHubで使用されるissue template、pull request templateで、説明部分はmarkdownのコメント(<!-- ... -->)として扱い、表示はされないよう修正しています。


Permit ActionController::Parameters for serializable Hash

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

ActiveJobの引数にActionController::Parametersクラスのインスタンスを指定出来るよう修正しています。


Merge pull request #34085 from albertoalmagro/display-help-as-command-line-guides

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

rails helpでコマンドを表示する際に、railsのコマンドとrakeのタスクをそれぞれ別に表示していたのを、全てまとめて表示するよう修正しています。


Merge pull request #34488 from mullican/word_wrap_preserve_left_side_whitespace

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

ActionView::TextHelper#word_wrapメソッドで行の左側のスペースについてはtrimしないよう修正しています。

    This is a paragraph with an initial indent,
followed by additional lines that are not indented,
and finally terminated with a blockquote:
  "A pithy saying"

上記のようなテキストがあった場合、元は、

This is a paragraph
with an initial indent,
followed by additional
lines that are not
indented,
and finally terminated
with a blockquote:
"A pithy saying by a
wise person"

このように行左側のスペースがtrimされてしまっていのたを、

    This is a paragraph
with an initial indent,
followed by additional
lines that are not
indented,
and finally terminated
with a blockquote:
  "A pithy saying by a
wise person"

のように、元のスペースは維持するようになっています。


Merge pull request #20865 from colavitam/only-except-behavior

actionpack/lib/action_dispatch/routing/mapper.rbの修正です。

resource(s)メソッドで、onlyexceptオプションを同時に指定できなかった(指定した場合onlyだけが使用されていたのを)のを、指定出来るよう修正しています。

が、大分混乱を招く書き方(e.g. resources :products, only: [:show, :destroy], except: :destroy)なので、基本的には推奨しないとの事です。


Merge pull request #22534 from evopark/master

actionmailer/lib/action_mailer/base.rbの修正です。

mail送信用のmultipart format blockで、使用されるテンプレート名がaction name固定だったのを、任意の値を指定出来るよう修正しています。

mail(template_name: template_name) do |format|
  format.text
  format.html
end

上記のようにtemplate_nameオプションで指定出来るようになっています。


Deprecate event.end = Time.now in favor of event.finish!

activesupport/lib/active_support/notifications/instrumenter.rbの修正です。

Notifications::Event#end=をdeprecateにしています。

Notifications::Eventが保持するデータに、cpu time, idle time等を追加した、 Add cpu time, idle time, and allocations features to log subscriber events の対応により、end=は使用されず、代わりにfinish!を使用する必要がある為。

rails commit log流し読み(2018/11/19)

2018/11/19分のコミットです。

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


Change queueing to queuing in docs and comments [skip ci]

各doc内のqueueingqueuingに修正しています。

queueingでも間違いではないらしいのですが、既存のコードではqueuingを使用している箇所が多かった為、使用する単語を統一する為に修正しています。


[ci skip] Update active_job_basics.md

rails guideのActive Job Basicsの修正です。

Callbacksの項にあるexampleコードで、ApplicationJob classの親クラスが指定されていなかったのを、ActiveJob::Baseを指定するよう修正しています。

rails commit log流し読み(2018/11/18)

2018/11/18分のコミットです。

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


Remove unused Journey::Router::RoutingError

actionpack/lib/action_dispatch/journey/router.rbの修正です。

使用していないJourney::Router::RoutingError クラスを削除しています。


Fix test name to match the test behavior

railties/test/generators/actions_test.rbの修正です。

rakeメソッドのテスト名がrailsになっていたのをrakeに修正しています。

rails commit log流し読み(2018/11/17)

2018/11/17分のコミットです。

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


Fix cache_versioning default note (#34466)

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

cache_versioningのdocでデフォルト値がfalseになっていたのをtrueに変更しています。

厳密にはfalseなのですが、load_defaultsを使用した場合(rails newで新規にアプリを作成した場合のデフォルト)ではtrueになっている為、説明もそれにあわせて修正しています。


Fix typo and clarify documentation

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

create_unlogged_tablesのdocでタイポしている箇所があったのを修正、及び、設定方法について説明している箇所の言い回しの修正を行っています。


Re-add changes_applied doc

activemodel/lib/active_model/dirty.rbのdocの修正です。

元々表示されていたActiveModel::Dirty#changes_appliedメソッドのdocがAPI docに表示されていなかったのを、再度表示されるよう修正しています。


Synchronize ActionCable JS source code with compiled bundle

actioncable/app/javascript/action_cable/connection_monitor.jsの修正です。

ConnectionMonitor.pollIntervalの引数でポーリング間隔を指定出来るようにした、Allow patching polling interval logarithmic multiplierで、誤ってcompiledされたバンドルファイルを修正してしまっていたのを、ソースを修正しています。

rails commit log流し読み(2018/11/16)

2018/11/16分のコミットです。

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


Arel: Implemented DB-aware NULL-safe comparison (#34451)

ArelにNULL-safe comparison処理(NULL同士を比較した場合に1になる処理)を実装しています。

MySQLでは<=> operator、PostgreSQLではIS DISTINCT FROMSQLiteではIS / IS NOT等DB毎に適切な処理が使用されるようになっています。適切な処理が無い場合は下記SQLが実行されるようになっています。

CASE WHEN (a = b) or (a IS NULL AND b IS NULL)
  THEN 1
  ELSE 0
END = 1

Replace cache_key with cache_key_with_version on caching_with_rails guides [ci skip]

rails guideのCaching with Rails: An Overviewの修正です。

cache keyの生成にcache_keyを使っていた箇所をcache_key_with_versionを使用するよう修正しています。

cache keyにtimestampが含まれる事を前提としていた説明になっているのですが、cache_keyメソッドだとkeyにtimestampは含まれない為。

rails commit log流し読み(2018/11/15)

2018/11/15分のコミットです。

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


Add test for normalizing non-unicode string

activesupport/test/multibyte_chars_test.rbの修正です。

ActiveSupport::Multibyte::Unicode.normalizeの引数にnon-unicodeな文字列を指定した場合のテストを追加しています


Merge pull request #34446 from alphaappsinc/master

actioncable/app/assets/javascripts/action_cable.jsの修正です。

ポーリング間隔の乗数の値が5固定だったのを、ConnectionMonitor.pollIntervalの引数で指定出来るよう修正しています。


Fix a method call in bin/setup file

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

config/database.ymlのコピーのexampleでcpFileUtils.cpに修正しています。

Remove "include FileUtils" sentence in setup/update bin filesFileUtilsをincludeしなくなり、cpだとエラーになってしまう為。

rails commit log流し読み(2018/11/14)

2018/11/14分のコミットです。

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

actionpack/CHANGELOG.md

railties/CHANGELOG.md


add a nice alias for the --webpack option

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

rails new--webpackオプションのaliasとして--webpackerを指定出来るよう修正しています。オプションが--webpack--webpackerなのか混乱する事がある為、両方指定出来るようにしたとのことです。


Merge pull request #34429 from bogdanvlviv/ensure-that-connected_to-establish_connection

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

ActiveRecord::Base#connected_to:databaseオプションを指定した場合に、その指定した際に接続が行われる事を確認するテストを追加しています。


Adjust bind length of SQLite to default (999)

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

SQLite3 adapterで、bind params lengthを999にしています。

SQLiteはデフォルトでは999までしかparameterを指定出来ない為。参考:Implementation Limits For SQLite


Emit single pair of parens for UNION and UNION ALL

activerecord/lib/arel/visitors/mysql.rbactiverecord/lib/arel/visitors/to_sql.rbの修正です。

複数のUNION / UNION ALLを使用した場合に、不要な括弧が生成されてしまうバグがあったのを修正しています。

元々MySQL + UNIONの場合は問題無かった(Visitors::MySQLに独自の処理があった)のですが、UNION ALLの場合、及び、他のadapterでは問題があり、全ての処理で正しいSQLが生成されるように修正しています。


Merge pull request #34411 from N0xFF/master

actionpack/lib/action_dispatch/system_testing/test_helpers/setup_and_teardown.rbの修正です。

system testのテスト失敗時に行うscreenshot取得処理でエラーになった場合にもCapybaraのsessionをリセットするよう修正しています。


Merge pull request #34400 from gmcgibbon/rm_autoload_app_javascripts

railties/lib/rails/engine/configuration.rbrailties/lib/rails/paths.rbの修正です。

デフォルトのeager_load_pathsautoload_pathsからapp/assets及びapp/javascriptを除外するよう修正しています。

app/assetsapp/javascript配下にはRuby用のファイルは無いはず、かつ、上記ディレクトリがeager_load_pathsautoload_pathsの対象に入ってしまっていると、不要なmoduleが定義されてしまう(例えば、app/javascript/foo/barというディレクトリがあった場合に、Foo::Barというmoduleが定義されてしまう)為。


Allow rescue from parameter parse errors

Action Packの修正です。

parameter parse error(ActionDispatch::Http::Parameters::ParseError)をcontrollerのrescue_fromでキャッチ出来るよう修正しています。


Describe how has_many's :dependent option affects #delete

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

Options for has_manyの項、:dependentオプションについて説明している箇所に、:destroyオプションと:delete_allオプションはcollection.deletecollection=の挙動にも影響を与える旨説明を追加しています。


fix typo on association_basics.md [ci skip]

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

semanticssamanticsにタイポしている箇所があったのを修正しています。