なるようになるブログ

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

rails commit log流し読み(2017/06/19)

2017/06/19分のコミットです。

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


CI against JRuby 9.1.12.0

.travis.ymlの修正です。

CIで使用するJRubyのバージョンを9.1.12に更新しています。


Fix examples for AC::Parameters#to_query [ci skip]

actionpack/lib/action_controller/metal/strong_parameters.rbのdocの修正です。

ActionController::Parameters#to_queryメソッドのdoc内のexampleコードで、permit処理が不足していたのを追加しています。

rails commit log流し読み(2017/06/18)

2017/06/18分のコミットです。

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


Fixes FIXME: rb-inotify 0.99 has been released

Gemfileの修正です。

rubygemsにリリースされているrb-inotifyを使用するよう修正しています。


Add a test case for #28754

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

JSON型を使用し、値にHashを指定している、かつ、保持している値とkeyのorderが変わっただけの場合は、値が変更したと見なさない事を確認するテストを追加しています。


Remove debug print

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

connection poolに関するテスト(test_disconnect_and_clear_reloadable_connections_are_able_to_preempt_other_waiting_threads)からデバッグ文を削除しています。

Distribute connections to previously blocked threads when we’re doneで発生したregressionを調査する為に入れられたデバッグ文だったのですが、Clear available connections immediatelyで対応が完了し、もうデバッグ文は不要な為削除したとの事です。

rails commit log流し読み(2017/06/17)

2017/06/17分のコミットです。

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


Merge pull request #29140 from notEthan/log_subscribed_avoid_rescuing

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

LogSubscriber::finishメソッドでloggerを使用する前にloggerインスタンスが生成されているかチェックするよう修正しています。


Add the <app_root>/test dir to the $LOAD_PATH as a string:

railties/lib/rails/commands/test/test_command.rbの修正です。

$LOAD_PATHにtest directoryがPathnameのobjectとして追加されていたのを、Stringとして追加するよう修正しています。 Rails 5.0まではStringとして追加されており、挙動を合わせる為との事です。


Remove references to deprecared raise_runtime_errors from documentation, which is always enabled now. Ref: https://github.com/rails/sprockets-rails/commit/655b93bffc6f51b96a7cc097f9010942693bfaae and https://github.com/rails/rails/pull/24070 . Fixes #29483 [ci skip] (#29484)

rails guideのThe Asset PipelineConfiguring Rails Applicationsの修正です。

deprecaredになっていたconfig.assets.raise_runtime_errorsについての説明を削除しています。


Merge pull request #29470 from kamipo/use_nullable_column_instead_of_primary_key

activerecord/test/schema/schema.rbの修正です。

subscribers tableでprimary keyとしてidを使用していたのを、普通のカラムとしてidを定義するよう修正しています。

-  create_table :subscribers, force: true do |t|
+  create_table :subscribers, id: false, force: true do |t|
     t.string :nick, null: false
     t.string :name
+    t.integer :id

idカラムをINSERTの際に使用しないテストで使われているのですが、oracle-enhanced adapterだとエラーになってしまう(ActiveRecord::NotNullViolation: OCIError: ORA-01400がおきてしまう)為、primary keyではなくnullを指定可能な通常のカラムとして定義するようにしたようです。


Merge pull request #29461 from dnl/unscope_where_or

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

orメソッドに指定するRelationでunscopeを使用したい場合、両方のRelationにorが無いとエラーになってしまっていたのを、エラーにならないよう修正しています。

# before
partial = Post.where("id = 1 and id != 2")
partial.or(partial.unscope(:where).where("id = 2"))
# => ArgumentError: Relation passed to #or must be structurally compatible. Incompatible values: [:unscope]

# after
partial = Post.where("id = 1 and id != 2")
partial.or(partial.unscope(:where).where("id = 2"))
# => Post.where("id = 1 or id = 2")

Merge pull request #29431 from kamipo/fix_create_table_with_query_from_relation

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

schema生成時に、RealtionからQueryを生成する、かつ、Relationでbindを使用している場合に、不正なSQL(値のbindが行われない)が生成されてしまうバグがあったのを修正しています。


Merge pull request #29392 from alexcameron89/unpersisted_create_association

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

parentがsaveされてない状態でsingular associationのcreate処理を呼び出した場合に、エラー(ActiveRecord::RecordNotSaved)をraiseするよう修正しています。

firm = Firm.new
firm.create_account
# => ActiveRecord::RecordNotSaved

Remove FK together with column in MySQL

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

MySQL adapterのremove_columnメソッドで、カラムを削除する際に外部キー制約も合わせて削除するよう修正しています。


Merge pull request #29415 from kamipo/remove_unused_defined_association

activerecord/test/models/comment.rbの修正です。

Commentクラスから使用していないdeveloper assocationを削除しています。


[ci skip] Update fedora SQLite3 package name

rails guideのDevelopment Dependencies Installの修正です。

Set up and Run the Testsの項、sqlite3のパッケージ名を修正しています。

rails commit log流し読み(2017/06/16)

2017/06/16分のコミットです。

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


Merge pull request #29462 from kamipo/fix_dump_schema_information_with_empty_versions

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

versionsが空の場合に、db:structure:dumpで生成されたdumpに不正なSQLが含まれてしまうバグがあったのを修正しています。


Merge pull request #29464 from eugeneius/raw_write_attribute

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

primary keyにid以外のカラムを使用している、かつ、idをカラムを使用している(primary keyとしてではなく、普通のカラムとして)場合に、idカラムを更新しようとするとprimary keyに使用しているカラムが更新されてしまうバグがあったのを修正しています。


Merge pull request #29447 from shotat/feature/enhance_active_model

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

ファイルの先頭にfrozen_string_literalを追加、及び、_assign_attributeメソッドでpublic_sendする値をStringで保持していたのを、Symbolで保持するよう修正しています。不要なオブジェクトの生成を避ける為。


Document setting the delivery_job for ActionMailer [ci skip]

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

deliver_laterdeliver_later!メソッドのdocに先日追加された、delivery_jobについてのdocを追加しています。


Fix formatting of ActionMailer::MessageDelivery doc [ci skip]

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

deliver_laterdeliver_later!メソッドのdocで、クラス名をタグで囲むよう修正しています。

rails commit log流し読み(2017/06/15)

2017/06/15分のコミットです。

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

actionmailer/CHANGELOG.md


Merge pull request #29378 from kamipo/avoid_overwriting_id_attribute_methods

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

idではない独自のprimary keyを定義している場合に、値の更新処理が正しく行われないバグがあったのを修正しています。


Allow translate default option to accept an array similar to i18n.t. Fixes #29441

actionpack/lib/abstract_controller/translation.rbの修正です。

AbstractController::Translation#translateメソッドのdefault optionにArrayを渡した場合に正しく処理が行われないバグがあったのを修正しています。

# before
ApplicationController.new.translate '.foobar', default: ['Foo Bar', :barfoo]
# => ["Foo Bar", :barfoo]

# after

ApplicationController.new.translate '.foobar', default: ['Foo Bar', :barfoo]
# => "Foo Bar"

挙動としてはわかるのだが、何でそもそもArrayを渡したいのたがわからない…。


Merge pull request #29452 from kamipo/prevent_extra_sync_with_transaction_state

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

AttributeMethods::PrimaryKey#to_keyメソッドからsync_with_transaction_stateメソッドの呼び出しを削除しています。to_keyメソッドではidメソッドを呼び出しており、idメソッドの方でsync_with_transaction_stateの呼び出しを行っている為。


Merge pull request #29409 from eugeneius/skip_test_uuid_column_default

activerecord/test/cases/adapters/postgresql/uuid_test.rbの修正です。

uuidに関するテストでsupports_pgcrypto_uuid?メソッドを呼び出す前にconnectionにsupports_pgcrypto_uuid?メソッドが定義されているかチェックするよう修正しています。

PostgreSQL以外のadapterでは上記メソッドが定義されておらず、NoMethodErrorが発生してしまうのを防ぐため。


Updated working with javascript readme to support the behavior of rails-ujs.

rails guideのWorking with JavaScript in Railsの修正です。

Rails-ujs event handlersの項を追加し、rails-ujsで実行されるeventの一覧を追加しています。


Remove deprecated option from docs [ci skip] (#29459)

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

削除されたassociationのforce_reloadオプションについての説明を削除しています。


Merge pull request #29457 from halogenandtoast/mm-configure_delivery_job

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

Action Mailerでmailの送信に使用するjobをclass毎に切り替えられるよう修正しています。

class MyMailer < ApplicationMailer
  self.delivery_job = MyCustomDeliveryJob
end

Merge pull request #29453 from kamipo/add_test_case_for_28274

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

transactionsの中でsave!を使用し、かつ、Rollbackが発生した場合に、idの値が元に戻る(新規レコードの場合nil)事を確認する為のテストを追加しています。


Fix indentation [ci skip]

actionmailer/CHANGELOG.mdの修正です。

Action Mailerでmailの送信に使用するjobをclass毎に切り替えられるよう修正した対応のエントリーのインデントを調整しています。

rails commit log流し読み(2017/06/14)

2017/06/14分のコミットです。

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


Merge pull request #29438 from koic/add_migration_compatibility_test

activerecord/test/cases/migration/compatibility_test.rbの修正です。

Rails 4.2で作成されたmigrationファイル(ActiveRecord::Migration[4.2])を使用してchange_tableメソッドを実行した場合のテストを追加しています。


Use require_relative instead of require with full path

相対パスでrequire出来る箇所については、requireではなくrequire_relativeを使用するよう修正しています。

-require File.expand_path("test/config", __dir__)
-require File.expand_path("test/support/config", __dir__)
+require_relative "test/config"
+require_relative "test/support/config"

不要なfull path取得処理を行わないようにする為、との事です。

rails commit log流し読み(2017/06/13)

2017/06/13分のコミットです。

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


Fix formatting of AD::FileHandler and AD::Static doc [ci skip]

actionpack/lib/action_dispatch/middleware/static.rbのdocの修正です。

ActionDispatch::FileHandlerActionDispatch::Staticクラスのdocのフォーマットが崩れていたのを修正しています。