2016/08/19分のコミットです。
CHANGELOGにのったコミットは以下の通りです。
- Deprecate
sanitize_conditions
. Usesanitize_sql
instead. - Sqlite3 migrations to add a column to an existing table can now be successfully rolled back when the column was given and invalid column type.
- Remove text default treated as an empty string in non-strict mode for consistency with other types.
- Avoid loading records from database when they are already loaded using the
pluck
method on a collection. - Option to remove standardized column types/arguments spaces in schema dump with
ActiveRecord::SchemaDumper.standardized_argument_widths
andActiveRecord::SchemaDumper.standardized_type_widths
methods.
[ci skip] Updates ActiveJob guide on default runner.
rails guideのActive Job Basics
の修正です。
The Purpose of Active Job
の項にデフォルトのadapterはinline(すぐ実行されるもの)である旨説明されていたのですが、Rails 5.0.0からasync adapter(非同期実行)に変わったので、その旨説明を修正しています。
Merge pull request #26197 from kamipo/remove_unnecessary_test_sql_for_insert_with_returning_disabled
activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb
、
activerecord/test/cases/adapters/postgresql/postgresql_adapter_test.rb
の修正です。
test_sql_for_insert_with_returning_disabled
を削除しています。 現状、sql_for_insert
メソッドはuse_insert_returning?
がtrueの場合の時のみよばれる為。
Merge pull request #25999 from kamipo/remove_sanitize_conditions
activerecord/lib/active_record/querying.rb
、
activerecord/lib/active_record/sanitization.rb
の修正です。
sanitize_conditions
をdeprecateにしています。今後はsanitize_sql
を使うようにとの事です。
Merge pull request #26200 from kamipo/remove_unnecessary_ordinal_methods
Active Recordの修正です。
CollectionAssociation
クラスからordinal methods(first
、last
等)を削除しています。
元々はCollectionProxy
からCollectionAssociation
を経由してRelation
のメソッドを呼ぶようになっていたのですが、今はCollectionProxy
はRelation
を継承しており、直接メソッドを参照出来る為、不要になったCollectionAssociation
からメソッドを削除したとの事です。
Merge pull request #24099 from k0kubun/preserve-readonly
activerecord/lib/active_record/associations/join_dependency.rb
、
activerecord/lib/active_record/associations/preloader/association.rb
、
activerecord/lib/active_record/reflection.rb
の修正です。
associationsをeager loadした際に、readonlyではないassociationでもreadonlyが設定されてしまっていたのを、readonlyではないassociationについてはreadonlyが設定されないよう修正しています。
Remove text default treated as an empty string in non-strict mode
Active Recordの修正です。
DBにMySQLを指定した場合、かつ、strict modeを指定していなかった場合に、text型のデフォルトを空文字として扱っていたのを、空文字として扱わない(他の型同様nullにする)よう修正しています。
text/blob 型のみ上記のような特殊な処理が入っており、他の型と挙動を合わせる為、修正したとの事です。
run before_configuration
callbacks as soon as application constant inherits from Rails::Application
railties/lib/rails/application.rb
の修正です。
before_configuration
callbackが、Rails::Application
を継承したapplicationが定義された時点で実行されるよう修正しています。
Rails 4.1までは上記挙動になっていたのですが、Rails 4.2でRails::Application
を継承したapplicationのインスタンスを生成したタイミングで実行するようになってしまっており、Rails 4.1までと同じ挙動になるよう修正しています。
Merge pull request #26089 from travisoneill/sqlite_rollback_fix
activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb
、
activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
の修正です。
DBにsqlite3を使用、かつ、migrationファイルでカラムを指定する際に、存在しない型をカラムに指定した場合に、migrationのrollback処理でエラーになってしまっていたバグがあったのを修正しています。
Revert "sql_for_insert
returns values for passing to exec_insert
"
activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb
の修正です。
ActiveRecord::ConnectionAdapters::DatabaseStatements#sql_for_insert
メソッドの戻り値からpk, sequence_nameを削除しています。
def sql_for_insert(sql, pk, id_value, sequence_name, binds) - [sql, binds, pk, sequence_name] + [sql, binds] end
元々は不要なqueryの発行を避ける為返すようにしていたのですが、`sql_for_insert` should be called inside `exec_insert`の対応により不要になった為削除したとの事です。
Merge pull request #25989 from kamipo/remove_unnecessary_select_for_collection_proxy
activerecord/lib/active_record/associations/collection_association.rb
、
activerecord/lib/active_record/associations/collection_proxy.rb
の修正です。
CollectionAssociation
及びCollectionProxy
クラスからselect
メソッドを削除しています。
元々はCollectionProxy
からCollectionAssociation
を経由してRelation
のメソッドを呼ぶようになっていたのですが、今はCollectionProxy
はRelation
を継承しており、直接メソッドを参照出来る為、不要になったCollectionAssociation
からメソッドを削除したとの事です。
pluck
メソッドで、recordsをload済みの場合、load済みのrecordsを使用するよう対応した、`pluck` should use `records` (`load_target`) when `loaded?` is trueの対応について、CHANGELOGにentryを追加しています。
Merge pull request #25675 from TimPetricola/schema-no-standardized-column-widths
activerecord/lib/active_record/schema_dumper.rb
の修正です。
schema.rb
を生成する際に、引数や型のスペースの自動整形を行うかどうかを指定する為のActiveRecord::SchemaDumper.standardized_argument_widths
、ActiveRecord::SchemaDumper.standardized_type_widths
オプションを追加しています。
例えば、下記のようなテーブル作成用のメソッドががあったとします。
create_table "delayed_jobs", force: :cascade do |t| t.integer "priority", default: 0, null: false t.integer "attempts", default: 0, null: false t.text "handler", null: false t.text "last_error" t.datetime "run_at" t.datetime "locked_at" t.datetime "failed_at" t.string "locked_by" t.string "queue" t.datetime "created_at" t.datetime "updated_at" t.index ["priority", "run_at"], name: "delayed_jobs_priority" end
ActiveRecord::SchemaDumper.standardized_type_widths
にfalseを指定すると、下記のようになります。型の長さに関わらず、スペースが一つに統一されています。
create_table "delayed_jobs", force: :cascade do |t| t.integer "priority", default: 0, null: false t.integer "attempts", default: 0, null: false t.text "handler", null: false t.text "last_error" t.datetime "run_at" t.datetime "locked_at" t.datetime "failed_at" t.string "locked_by" t.string "queue" t.datetime "created_at" t.datetime "updated_at" t.index ["priority", "run_at"], name: "delayed_jobs_priority" end
ActiveRecord::SchemaDumper.standardized_argument_widths
にfalseを指定すると、下記のようになります。null: false
の位置を無理にスペースで調整、というような事はしなくなっています。
create_table "delayed_jobs", force: :cascade do |t| t.integer "priority", default: 0, null: false t.integer "attempts", default: 0, null: false t.text "handler", null: false t.text "last_error" t.datetime "run_at" t.datetime "locked_at" t.datetime "failed_at" t.string "locked_by" t.string "queue" t.datetime "created_at" t.datetime "updated_at" t.index ["priority", "run_at"], name: "delayed_jobs_priority" end
migrationを実行した際に、関係な部分までdiffが出てしまうのを避けるようにする為追加したとの事です。地味に良さそう。
Merge pull request #26212 from evmunro/as-json-sets-request-to-json-for-controller-test
actionpack/lib/action_controller/test_case.rb
の修正です。
ActionController::TestCase#process
及び、http method用のメソッド(get
、post
等)でContent typeを指定するためのas
オプションを追加しています。
例。
post :render_body, params: { bool_value: true, str_value: "string", num_value: 2 }, as: :json
ActionController::Testcase
、まだ手をいれるのOKなんですね。今後どういう扱いにするんだろう。
Copy edits in the documentation [ci skip]
actionpack/CHANGELOG.md
、
actionpack/lib/action_controller/test_case.rb
のdocの修正です。
フォーマットの修正を行っています。
Remove unused blob_or_text_column?
method
activerecord/lib/active_record/connection_adapters/mysql/column.rb
の修正です。
使用していないblob_or_text_column?
メソッドを削除しています。
Merge pull request #26218 from kamipo/remove_unnecessary_length
activerecord/lib/active_record/associations/collection_association.rb
、
activerecord/lib/active_record/associations/collection_proxy.rb
の修正です。
CollectionAssociation
及びCollectionProxy
クラスからlength
メソッドを削除しています。
length
はrecords
にdelegateするようになっており、上記クラスには不要な為との事です。