なるようになるブログ

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

rails commit log流し読み(2014/08/06)

2014/08/06分のコミットです。

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

activerecord/CHANGELOG.md


Cleanup Transaction inheritance.

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

Transactionクラスについてリファクタリングしています。

元々あったTransactionのサブクラスを全て削除して、必要なクラスのみ再度定義しています。


Moved #create! method from Validations to Persistence module

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

#create!メソッドValidationsクラスからPersistenceクラスに移動しています。

savesave!createPersistenceに定義されているのに、create!だけValidationsにあるのおかしくない? という事で修正したようです。


Add after_bundle to the release notes and upgrade guide

rails guideのA Guide for Upgrading Ruby on Railsの修正です。

after_bundleについての説明を追加しています。

管理しているファイルを全てバージョン管理化に追加する処理をApplication templateを設定していた場合に、エラーが発生してしまう場合があります。

以下サンプル。

# template.rb
generate(:scaffold, "person name:string")
route "root to: 'people#index'"
rake("db:migrate")

git :init
git add: "."
git commit: %Q{ -m 'Initial commit' }

これはbinstub実行前にgit init / adddが実行されてしまい、binstubにより生成されたファイルがバージョン管理に追加されないので、エラーになってしまうようです。

で、その為の対応として、after_bundleというcall backが追加されています。

以下修正したサンプル。

# template.rb
generate(:scaffold, "person name:string")
route "root to: 'people#index'"
rake("db:migrate")

after_bundle do
  git :init
  git add: "."
  git commit: %Q{ -m 'Initial commit' }
end

これで大丈夫。


Fix digest ETAG test.

railties/test/application/middleware_test.rbの修正です。

Rack::ETagがdigestの前にW/を含むようになったので、rails側のテストも同夜に修正しています。

ETagには、強いETag値と弱いETag値があり、弱いETag値は先頭にW/がつくんですね。知らなかった。詳細はwiki参照。


We don't need parenthesis for this

railties/test/application/middleware_test.rbの修正です。

不要な丸括弧を削除しています。


just assign the instance variables on the test

actionpack/test/dispatch/prefix_generation_test.rbの修正です。

テストに使用するインスンタンス変数をsetup内で設定するよう対応しています。


no reason to lazily instantiate the routes

actionpack/test/dispatch/prefix_generation_test.rbの修正です。

routesの生成処理をクラスメソッドにしていたのを止めて、クラスロード時に処理が行われるよう修正しています。


a rails application should be an engine subclass

actionpack/test/dispatch/prefix_generation_test.rbの修正です。

RailsApplicationの親クラスにRails::Engineを設定しています。


call the routes method on engines

actionpack/test/dispatch/prefix_generation_test.rbの修正です。

routesの生成処理を再度修正しています。Rails::Engineroutesメソッドを呼び出して対応するように修正しています。


schema rake tasks are specific about the configuration to act on.

ActiveRecordのdatabase taskの修正です。

load schemaを行う際、configurationを指定出来るようにしたActiveRecord::Tasks::DatabaseTasks.load_schema_forメソッドを追加しています。

最終的には、ActiveRecord::Tasks::DatabaseTasks.load_schema_forActiveRecord::Tasks::DatabaseTasks.load_schemaに名前を変更したいとの事で、現状のload_schemaはdeprecateになりました。

現状のload_schema相当のメソッドが必要な場合、ActiveRecord::Tasks::DatabaseTasks.load_schema_currentを使用するようにとの事です。


Merge pull request #16402 from bogdan/select_with_empty_block

actionview/lib/action_view/helpers/tags/select.rbの修正です。

selectタグに空のブロックを渡した際、htmlの出力を行わないよう対応しています。

サンプル。

= form.select(:campaign_id) do
  - available_campaigns.each do |c|
    %option{value: c.id}= c.name

ここでavailable_campaignsnilだった場合にエラーが発生していたのですが、エラーが起きないよう対応されています。