なるようになるブログ

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

rails commit log流し読み(2014/05/16)

2014/05/16分のコミットです。

CHANGELOGにのったコミットは以下の通りです(詳細は本文参照)。

activerecord/CHANGELOG.md

  • Floats with limit >= 25 that get turned into doubles in MySQL no longer have their limit dropped from the schema.

actionpack/CHANGELOG.md

  • Fix 'Stack level too deep' when rendering head :ok in an action method called 'status' in a controller.

Changed extract_limit in class Column to return correct mysql float and double limits

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

MySQLでdouble型を使用したいとき、マイグレーションファイルにlimit: 53を指定するのですが、この情報はschema.rbに記載されませんでした。

なので、開発環境でlimit: 53を指定して作成したschema.rbを、違う環境でrake db:setupすると、double型ではなくfloat型になってしまう問題があり、この問題を修正しています。

# before
  t.float    "point"

# after
  t.float    "point",  limit: 53

合わせて、floatについてもlimit値をschema.rbに記録されるよう修正しています。


fixes stack level too deep exception on action named 'status' returning 'head :ok'

actionに以下のメソッドを定義した際に、stack level too deep exceptionが発生するバグの修正です。

def status
  head :ok
end

ActionController::Head#headメソッドでself.statusを参照していて、呼び出しが再帰になってしまってたんですね。なるほど。


Small refactoring on clear_transaction_record_state

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

committed!メソッドの中で行っていた@_start_transaction_state.clearclear_transaction_record_stateメソッドの中で行うよう修正しています。

処理の集約ですかね。


Clear transaction state if callback raise rollback

ActiveRecord::Transactions::ClassMethods#with_transaction_returning_statusメソッドの修正です。

callback処理の中でrollbackが行われた際に、stateをクリアするよう修正しています。


formatting pass through CHANGELOGS. [ci skip]

各CHANLOGの修正です。

ピリオド追加したり、セミコロン追加したり等。