Rails 3.2.9.rc1 has been released!

とっくに3.2.9が出てますが、ざっと眺めたのでメモ。
Riding Rails: Rails 3.2.9.rc1 has been released!


なんだか、小さい修正とbug fixが沢山といった印象です。
もっとさらっと読み飛ばしてもよかったなぁ。


CHANGES since 3.2.8

Action Mailer

・mail()メソッドが呼ばれない場合、viewをrenderしないように修正(#7761a273b6b

Action Pack

・link_toのremoteオプションに:remoteを追加(PR#7865


・viewのテストケース以外でassert_templateに:localsオプションを設定していると警告を表示するように修正(#3415PR#7848


ActionController::TemplateAssertions競合のあった内部変数名を修正(2bad605
※3.2.9.rc2でrevertされています!


・resource と resourcesの中でoptionが変更されていたのをメソッド内でdupするようにしています。(3b5bc8d


・Precompiled assets include aliases from foo.js to foo/index.js and vice versa.(19987b6

precompileで設定した値に/index.cssみたいなのが利用できるっぽい。

# Precompiles phone-<digest>.css and aliases phone/index.css to phone.css.
config.assets.precompile = [ 'phone.css' ]

# Precompiles phone/index-<digest>.css and aliases phone.css to phone/index.css.
config.assets.precompile = [ 'phone/index.css' ]

# Both of these work with either precompile thanks to their aliases.
<%= stylesheet_link_tag 'phone', media: 'all' %>
<%= stylesheet_link_tag 'phone/index', media: 'all' %>


・assert_templateがより厳格になったようです。(#3849
※3.2.9.rc2でrevertされています!
/layout/hello.html.erb が存在していた場合、
これまでは、これでもOKでしたが

assert_template "layout"
assert_template "out/hello"

これからは、これでないとダメ。

assert_template "layout/hello"
assert_template "hello"


・Handle ActionDispatch::Http::UploadedFile like Rack::Test::UploadedFile,
 don't call to_param on it. Since Rack::Test::UploadedFile isn't API compatible
 this is needed to test file uploads that rely on tempfile being available(c53e5debrynary/rack-test #30
 これよくわからん。


・:moduleオプションを指定するroutesのshorthandのBugfix(#6497
 shorthandだと、moduleオプションが効いていなかったみたい。
※rc3でrevertされています!


・Respect config.digest = false for asset_path(1ac19c1
 config.digest = false と config.compile = false が併用できなかったみたい。


・ログにstatusコードを正しく表示するように修正(dd76b3b#7646
 404でも500になってたっぽい。


・日付選択でdisabled and discard オプションを併用するとバグってたっぽい(dcb2bee


・select_tagの第2引数がnilだとExceptionエラーが発生していたようです。ちなみに3.2.7では問題無し。(#7404


・Support cookie jar options (e.g., domain :all) for all session stores. Fixes GH#3047, GH#2483.
 独自のsession store利用時に[domain :all]みたいなoptionが利用できなかったみたい。
(CookieJarってclassか)


・send_fileのパフォーマンス改良
 いちいちファイルをopenしていたのをRack::Sendfileに任せた模様。
 Rack::Sendfileをどこでどうしているのか、よくわからん。


Active Model

・builderでのnil/空文字の際、閉じタグの出力方法を変更

# before
<pseudonyms nil=\"true\"></pseudonyms>

# after
<pseudonyms nil=\"true\"/>
Active Record

・update_columns、update_column 主キーが変更できるようになりました。(Bugfix扱い cdfa4a5


・DBの接続項目(password)に特殊文字を使うとencodeされていたのでdecodeするように修正(f96b410


・Synchronize around deleting from the reserved connections hash. Fixes
 詳しくはわかんないけどconnection release時に同期できていなかったっぽい。(#7955)


PostgreSQLで複数schemaを使用した場合のバグ修正のようです(#7914


・Fix deprecation notice when loading a collection association
 that selects columns from other tables, if a new record was previously built using that association.
84c3774


PostgreSQLでprimary_keyに大文字が利用できなかったのを修正(#5920


・countメソッドで親レコードが保存されていなければ、0を返すように修正。

length with always load the objects and use Array#length
count will always do a SQL count
size will check whether the collection is loaded, and use it, otherwise will do a count.


・has_many :thoroughでreset_countersがエラーとなっていたのを修正(#7822


・mysql2のwait_timeoutとコンフリクトしていたためcheckout_timeoutとしているようです(390870


・fieldというカラムが作成できるようにRename field_changed? to _field_changed?(#3544


・未保存のhas_many :thoroughでcollection=[]とした場合に新規レコードが作成されなかったのを修正(#7661


・通常のCRUD以外ではexplainしないように修正(#7544#6458


・Backport test coverage to ensure that PostgreSQL auto-reconnect functionality remains healthy.
f48bb01


・database.ymlで文字コードを指定する場合
 charsetでなくencodingを使用するように修正
#7572


・ ConnectionAdapters::Columnのリファクタリング
 type を to_iするところでrescureしていますが、to_iは文字でも0にキャストするので削除しています(#7582
※rc2で追加修正あり


・time型のカラムで不正な値(parseできない)の場合にnilを返すようにしています
#7337


STI使用時にbecomesにバグがあったようです(#7503


・reset_countersで同一外部キーを参照していると問題があったようです(#5200


・timestamp型の比較時にマイクロ秒の丸め方に問題があったようです
(reloadすると、mysqlではusecが0になるやら、何やら面倒そうです)
#6975


・Use inversed parent for first and last child of has_many association.(PR#7377
※rc2で追加修正あり


・Column.microseconds and Column.fast_string_to_date(timeのような気がする)時に
 to_fしていたため誤差が発生していたようです。
PR#7352


・increment!, decrement!, toggle! はcallbacksをskipしないように修正
 具体的には、update_columnからupdate_attributeへ変更。
#7306


・create時にAR::RecordInvalid例外が発生した場合、idがnilだけど
 作成成功のようになってしまっていたようです。(persisted?がtrueとなっていた)
#3217


・プロパティにnilを代入する際に不要なトランザクションが発行されていたのを修正
#7191


ActiveRecord::Storeが空だとエラーとなっていたようです(#4840


postgreSQLのpool manager(pgBouncerみたいなの)を利用時に
 prepared_statementが利用できない状態となっているらしく
 system queryを投げる際にはprepared satementを利用しないように修正しています。(#5872


・db:schema:load or db:structure:load 時に
 config.active_record.schema_format = :sqlの場合
 environmentの読み込みタイミングが遅かったようです。(#4772


Active Support

・logger.push_tags、pop_tagsが追加されたようです(20f5f0


・Add %:z and %::z format string support to ActiveSupport::TimeWithZone#strftime.(#6962

assert_equal '+0900',     twz.strftime('%z')
assert_equal '+09:00',    twz.strftime('%:z')
assert_equal '+09:00:00', twz.strftime('%::z')
Railties

・app/assets and app/viewsをeager_loadから外しています。(どうやってんのかいまいちわからん)
PR#7587
※rc3でrevertされています!


ruby_version_check.rb でRails 3 requires Ruby 1.8.7 or >= 1.9.2.
 としています。(こんなのあったのか)
36261c8


おまけ

typo報告。
53ca22f