なるようになるブログ

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

rails commit log流し読み(2015/01/29)

2015/01/29分のコミットです。

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

activerecord/CHANGELOG.md

actionpack/CHANGELOG.md


Don't redefine autosave association callbacks in nested attrs

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

accepts_nested_attributes_forを使用している際、 autosave association callbacksが2回定義されてしまうバグがあったので、不要なcallback定義を削除しています。


Merge pull request #18654 from liseki/fix-aj-test-helper

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

ActiveJobのテスト用メソッドの引数にGlobalIdを使用しているオブジェクトが渡された際に、ActiveJobのシリアライズ処理が足りてない為に、assertionが期待通りに動作しなくなるバグがあったのを対応しています。


table name should be plural [ci skip]

railties/lib/rails/generators/rails/model/USAGEの修正です。

descriptionのところにあったタイポ("admin_account" -> "admin_accounts")を修正しています。


Added #or to ActiveRecord::Relation

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

ActiveRecord#Relation#orメソッドが追加されました。

Post.where('id = 1').or(Post.where('id = 2'))
# => SELECT * FROM posts WHERE (id = 1) OR (id = 2)

WHERE または HAVING と合わせて使える事が出来ます。

group = User.where('id < ?', 10).group(:email)
group.having('COUNT(*) > 1').or(group.having("email like '%google.com'"))
#=> SELECT "users".* FROM "users" WHERE ((id < 10) OR (id < 10)) GROUP BY email HAVING ((COUNT(*) > 1) OR (email like '%google.com'))

Add CHANGELOG entry

actionpack/CHANGELOG.mdの修正です。

先日コミットされた*_via_redirectメソッドのdeprecate対応について追記しています。


Just assert the deprecation of one method

actionpack/test/controller/integration_test.rbの修正です。

先日コミットされた*_via_redirectメソッドのdeprecate対応のテストで、assert_deprecatedメソッドの引数のブロックにdeprecate メソッドの呼び出し以外の処理も入っていたのを、deprecate メソッドの呼び出しのみ行うよう修正しています。


Preserve default url options when generating URLs

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

URLを生成する際、default url optionsに設定した値を保持するよう修正しています。

リクエストされたparameterによって、default url optionsの値が反映されないバグがあったので修正しています。formatオプションが駄目だったもよう。

def default_url_options
  { format: 'atom', id: 'default-id' }
end

# routes
get "/things/:id(.:format)" => 'things#show', :as => :thing

thing_path('1') # => '/things/1.atom'
thing_path # => '/things/default-id.atom'

Bring the implementation of Relation#or up to speed

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

先日追加されたWhereClauseクラスを使用するよう、Relation#orメソッドリファクタリングを行っています。


Always convert strings to UTF-8, regardless of column type in SQLite

activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rbactiverecord/test/cases/adapters/sqlite3/quoting_test.rbの修正です。

SQLiteの場合、カラムの型が何であれ、StringはUTF-8に変換するよう修正しています。text columnsの場合に変換漏れがあった為、データがStringの場合とりあえず変換するようにしたようです。


Don't error when grouped calculations return 0 records

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

group(xxx).countした場合に、カウントが0だとActiveRecord::RecordNotFoundが発生してしまっていたのを、正しく0を返すよう修正しています。


Add fix for loading fixtures in engine tests

railties/lib/rails/generators/rails/plugin/templates/test/test_helper.rbの修正です。

fixturesのロード処理(ActiveSupport::TestCase.fixtures :all)が無かったので、追加しています。


let dependencies use Module#const_defined?

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

依存関係のチェックにrailsが拡張したObject.qualified_const_defined?メソッドを使用していたのを、Ruby標準のObject.const_defined?を使用するよう修正しています。

Ruby 1.9から親クラスやモジュールの定数でもObject.const_defined?がtrueを返すようになったので、もうqualified_const_defined?を使用する必要が無いとの事で修正したようです。


reassign file_fixture_path in plugins test_helper.rb. refs #18658.

railties/lib/rails/generators/rails/plugin/templates/test/test_helper.rbの修正です。

先日コミットされたActiveSupport::TestCase.fixture_pathの設定をplugin用のtest_helperにも追加しています。


Switch to kwargs in ActionController::TestCase and ActionDispatch::Integration

actionpack/lib/action_controller/test_case.rbactionpack/lib/action_dispatch/testing/integration.rbの修正です。

ActionController::TestCaseActionDispatch::IntegrationクラスのHTTP request methodsの引数の渡し方が変更になりました。

post :create, params: { y: x }, session: { a: 'b' }
get :view, params: { id: 1 }
get :view, params: { id: 1 }, format: :json

旧フォーマット(引数無し)の場合、deprecateメッセージが表示されるようになっています。


Improve CHANGELOG

actionpack/CHANGELOG.mdの修正です。

先にコミットされたActionController::TestCaseActionDispatch::IntegrationクラスのHTTP request methodsの引数の渡しについての変更履歴の説明を改善しています。


Use fixed fonts only in the name of the parameter

actionpack/lib/action_controller/test_case.rbactionpack/lib/action_dispatch/testing/integration.rbのdocの修正です。

固定フォントの対象がメソッド名だけでなく":"まで含まれてしまっていたのをメソッド名だけ対象にするよう修正しています。


Consistent usage of spaces in hashes across our codebase

ActionPackの修正です。

先にコミットされたActionController::TestCaseActionDispatch::IntegrationクラスのHTTP request methodsの引数の渡しの対応したファイルのコードの書き方をrailsのコード規約に合わせて修正しています。(Hash形式を1.9形式の書き方に修正、Hashの前後にスペース追加等)