2019/04/19分のコミットです。
CHANGELOGにのったコミットは以下の通りです。
- Preserve
html_safe?
status onActiveSupport::SafeBuffer#*
. - Introduce
ActiveSupport::ActionableError
.
Ensure active record can load without Railties
activerecord/lib/active_record/railties/databases.rake
、
activerecord/lib/active_record/tasks/database_tasks.rb
の修正です。
Active RecordのDB関係のタスク内でRais.env
を直接参照しないよう修正、及び、Rails
定数を参照する前に定義されているかチェックするよう修正しています。
Rails外の環境でActive Recordを使用する場合にエラーになるのを避ける為。なお、複数DB対応はrailtiesに依存している為、現状Active Record単体では使用出来ないようになっています。
If exception occurs during setup, add to each test executed
activesupport/lib/active_support/testing/parallelization.rb
の修正です。
parallel testingの前処理(parallelize_setup
)でexceptionがraiseされた場合も、テストが成功扱いになってしまっていたのを、正しく失敗扱いとなるよう修正しています。
Preserve html_safe? status on ActiveSupport::SafeBuffer#*
activesupport/lib/active_support/core_ext/string/output_safety.rb
の修正です。
ActiveSupport::SafeBuffer#*
メソッドでhtml_safe
の状態を保持するようになっていなかったのを、他のメソッド同様状態を保持するよう修正しています。
# Before: ("<br />".html_safe * 2).html_safe? #=> nil # After: ("<br />".html_safe * 2).html_safe? #=> true
activesupport/lib/active_support/cache/redis_cache_store.rb
のdocの修正です。
ActiveSupport::Cache::RedisCacheStore#initialize
のdocに記載されているRedis cache storeのオプションについての説明で、説明が不足しているオプションがあったのを追加しています。
yarn.lock
の修正です。yarn.lock
の内容を最新の内容に更新しています。
Help command for visible commands should be hidden
railties/lib/rails/commands/dev/dev_command.rb
の修正です。
dev
コマンドのhelpメソッドがrails
コマンドのhelpに表示されてしまっていたのを、他のコマンド同様helpメソッドは表示されないようにしています。
Revert renamed GeneratedAttributeMethods
activerecord/lib/active_record/attribute_methods.rb
の修正です。
GeneratedAttributeMethods
moduleをmodelのnamespace配下で生成するよう修正したGive GeneratedAttributeMethods module a nameで、attribute method用のクラスのクラス名をGeneratedAttributeMethods
からGeneratedAttributeMethodsBuilder
に変更していたのを、GeneratedAttributeMethods
に戻しています。元のclass名の方が適切な為。
Give GeneratedRelationMethods module a name
activerecord/lib/active_record/relation/delegation.rb
の修正です。
GeneratedAttributeMethods
moduleをmodelのnamespace配下で生成するよう修正したGive GeneratedAttributeMethods module a nameと同様に、relation methodについてはmodelのnamespace配下でGeneratedRelationMethods
を生成するよう修正しています。
Fix const Post
leakage in test/cases/base_test.rb
activerecord/test/cases/base_test.rb
の修正です。
テスト内で生成した定数をテストの後処理で削除するよう修正しています。他のテストに影響が出ないようにする為。
Merge pull request #36019 from abhaynikam/35845-add-webpacker-gem-to-update-task
actiontext/lib/templates/installer.rb
の修正です。
Action Textのインストール時に、webpackerを使用していない場合trix
や@rails/actiontext
のrequireを自分で追加する必要がある旨メッセージを出力するよう修正しています。
Refactor ActiveSupport::Deprecation.deprecate_methods
not to expose internal methods
activesupport/lib/active_support/deprecation/method_wrappers.rb
の修正です。
ActiveSupport::Deprecation.deprecate_methods
メソッドを、deprecate用の内部メソッドをexposeしないようリファクタリングしています。
A regression in deprecate_methods
was introduced in a982a42:で、deprecate_methods
メソッドではprepend
を使わずalias_method_chain
をエミュレートするよう修正しました。その際、alias_method_chain
と同様の挙動になるよう内部メソッドをexposeするようにしていました。
が、Make deprecate
work for non-exists methodsで再度、特定の場合はprepend
を使うよう修正しました。そのprepend
を使う処理の場合だと、内部メソッドはexposeしないようになりました。
これにより、行う処理によって内部メソッドの扱いが変わってしまいました。ただ、そもそも内部メソッドをexposeするのは、明確な仕様、という訳ではなかったので、全ての処理で内部メソッドをexposeしないよう修正するようにしています。
Merge pull request #34788 from gsamokovarov/actionable-errors
Action Pack、Active Supportの修正です。
まずActive SupportにActiveSupport::ActionableError
というクラスを追加しています。これは、特定のエラーが発生した際に、そのエラーを解決するための"action"を定義出来るようにするためのクラスです。
例えば、PendingMigrationError
が発生した場合に、migrateという"action"を実行したい場合、下記のように定義します。
class PendingMigrationError < MigrationError #:nodoc: include ActiveSupport::ActionableError action "Run pending migrations" do ActiveRecord::Tasks::DatabaseTasks.migrate end end
合わせて、Action PackにActionDispatch::ActionableExceptions
というmiddlewareを追加しています。このmiddlewareでは、先のActiveSupport::ActionableError
で指定した"action"を、railsのエラー画面上から実行出来るようにする為のmiddlewareです。
"action"が指定されているエラーが発生した場合、railsのエラー画面上にその"action"を実行する為のボタンが表示され、そのボタンを押下する事で"action"を実行出来るようになっています(下記の"Run pending migrations"ボタン)。
なお、先にあげたPendingMigrationError
に関する処理はRails側で行っており、PendingMigrationError
が発生した場合ブラウザでボタンを押下するだけでmigrateが実行されるようになっています。
Deprecate collection_cache_key
which is private API
activerecord/lib/active_record/integration.rb
、
activerecord/lib/active_record/relation.rb
の修正です。
collection_cache_key
メソッドをdeprecateにしています。
元々private APIだったのですが、API docに出てしまっていたのでpublic APIとしてメンテしていました。ただ、そのdocもMerge pull request #34378 'collection-cache-versioning'で削除されてしまった為、deprecateにしています。
が、どうやらAction Viewで使っていた為、後ほどRevertしています。
Merge pull request #35998 from itsWill/add_documentation_for_add_index
activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
のdocの修正です。
add_index
/ remove_index
メソッドのdocにalgorithm
オプションについての説明を追加しています。
Merge pull request #36000 from JosiMcClellan/fix-screenshot-filenames
actionpack/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb
の修正です。
system testingでテスト失敗時に取得するスクリーンショットのファイル名を、自動で225文字にトランケートするよう修正しています。長過ぎるとファイル生成時にErrno::ENAMETOOLONG
でエラーになってしまう為。
Add null: false
constraint by default for belongs_to
associations
railties/lib/rails/generators/generated_attribute.rb
の修正です。
model generatorで、belongs_to
/ references
associationが指定された場合に、migrationファイルのassociation用のカラムにnull: false
を指定するよう修正しています。
modelのバリデーションにrequired
が指定されている場合、DBでもnull: false
の指定があるべきだとう、という事で修正されました。なお、null: false
が指定されるのは、config.active_record.belongs_to_required_by_default
がtrueのときのみ。
Revert "Deprecate collection_cache_key
which is private API"
collection_cache_key
メソッドをdeprecateにした、Deprecate collection_cache_key
which is private API をrevertしています。理由は前述。