2017/04/20分のコミットです。
CHANGELOGにのったコミットは以下の通りです。
- Raise exception when calling
to_h
in an unpermitted Parameters. - Add
ActionController::Parameters#to_hash
to implicit conversion.
- Fix
bin/rails db:forward
first migration. - Raise error
UnknownMigrationVersionError
on the movement of migrations when the current migration does not exist.
actioncable/CHANGELOG.md
Merge pull request #28794 from vishalzambre/activerecord-guid
rails guideのActive Record Migrations
の修正です。
Types of Schema Dumps
の項、DB固有の項目(トリガー、シーケンス)等の扱いについての説明の箇所がハイライトされるよう、先頭にNOTE:
を追加しています。
rails guideのActive Record Migrations
の修正です。
Types of Schema Dumps
の項のグラマー、言い回しを修正しています。
Merge pull request #28734 from rafaelfranca/strong-parameters
Action Packの修正です。
ActionController::Parameters
に対して以下の対応を行っています。
Hash
を返すActionController::Parameters#to_hash
メソッドの追加#to_h
がHashWithIndifferentAccess
返すのに対して、こちらはHash
を返します
- permitしていない
ActionController::Parameters
クラスのオブジェクトに対してto_h
メソッドを呼び出した場合に、エラー(UnfilteredParameters
)をraiseするよう修正- 元々は空の
Hash
か、デフォルトでpermitされる:controller
と:action
だけが返るようになっていました。しかしto_h
を呼び出して値が空の場合にto_unsafe_h
を呼びだす、というコードが多く発生してしまい、これはセキュリティ的に良くないだろう、という事で、permitされてない場合は明示的にエラーとするようにしたようです。
- 元々は空の
ActionController::Parameters#to_query
、#to_param
メソッドを追加- 元々はpermitされてない値が使用される可能性がある為実装されていなかったのですが、
#to_h
がエラーをraiseするようになり、#to_h
メソッドを使用すればpermitされてない場合はエラーになるようなった為、実装を追加との事です
- 元々はpermitされてない値が使用される可能性がある為実装されていなかったのですが、
Active Supportの修正です。
deprecation notificationsにgem名とdeprecation horizon(削除されるバージョン)を渡せるよう修正しています。gem名は元々はdeprecations.rails
が固定で設定されていたのですが、rails以外で使いたいケースがあった為との事です。
Merge pull request #28166 from bogdanvlviv/fix_migration_tasks
activerecord/lib/active_record/migration.rb
の修正です。
最初のマイグレーションまでrollbackされた状態でdb:forward
taskを実行してもマイグレーションが実行されないバグがあったのを修正、及び、マイグレーションが存在しない場合にdb:rollback
、db:forward
taskを実行した場合にエラー(UnknownMigrationVersionError
)をraiseするよう修正しています。
Merge pull request #28757 from edwardmp/log-actioncable-write-read-errors
actioncable/lib/action_cable/connection/base.rb
の修正です。
socketで処理が発生した場合に、エラーを無視していたのをエラーの内容をログに出力するよう修正しています。
def on_error(message) # :nodoc: - # ignore + # log errors to make diagnosing socket errors easier + logger.error "WebSocket error occurred: #{message}" end
Use released sass-rails instead of master version
railties/lib/rails/generators/app_base.rb
の修正です。
新規に作成するrailsアプリのGemfileで、Githubのmasterブランチではなく、リリース済みのgemを使用するようまとめて修正しています。
Fix all style guides violations
rubocopのバージョンを0.48.0
に更新、及び、rubocopのルールに違反していた箇所をまとめて修正しています。
Merge pull request #28708 from y-yagi/dont_generate_system_test_files
railties/lib/rails/generators/rails/app/templates/config/application.rb
の修正です。
skip_system_test
オプションを指定してrailsアプリを作成した場合、scaffold
でsystem testに関するファイルが生成されないようにする為に、application.rb
にgenerators.system_tests = nil
を設定するよう修正しています。
Merge pull request #28776 from kamipo/respect_limit_for_cache_key
activerecord/lib/active_record/collection_cache_key.rb
の修正です。
ActiveRecord::CollectionCacheKey#collection_cache_key
メソッドでrelationからcache keyを生成する際に、relationがload済みの場合はrelationに指定されたlimitに依存したsizeを取得していたのを、loadされてないない場合はlimitが無視されていました。
で、これをrelationがloadされていない場合もlimitを考慮したsizeを取得するよう修正しています。
Merge pull request #28733 from kamipo/dont_fallback_to_utf8mb3_after_mysql_8.0.0
Active Recordの修正です。
MySQL 8.0.0以降では、Rails内部用のテーブルを作成する際に、utf8mb3にフォールバックしないよう修正しています。
+ def internal_string_options_for_primary_key + super.tap do |options| + if CHARSETS_OF_4BYTES_MAXLEN.include?(charset) && (mariadb? || version < "8.0.0") + options[:collation] = collation.sub(/\A[^_]+/, "utf8") + end + end + end + private + CHARSETS_OF_4BYTES_MAXLEN = ["utf8mb4", "utf16", "utf16le", "utf32"] +
MySQL 8.0系でデフォルトのcollationが変わった為(fallback先のcollationがもう無い為)対応したようです。また、そもそも、MySQL 5.7以降はinnodb_default_row_format
でrow formatを指定出来るようになっており、fallbackしないでも大丈夫な為、という理由のようです。 あってるか大分不安。
activesupport/lib/active_support/callbacks.rb
のdocの修正です。
CallbackChain
クラスのdocにArray + compileメソッドが定義されているクラスである旨説明が記載されていたのですが、use delegation over inheritance so we can figure when to cache / bust cacheでArrayを継承しなくなっていたので、コメントを消しています。