なるようになるブログ

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

rails commit log流し読み(2016/07/09)

2016/07/09分のコミットです。

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

actioncable/CHANGELOG.md

activerecord/CHANGELOG.md


Merge pull request #25624 from tinco/actioncable_write_race

actioncable/lib/action_cable/connection/stream.rbの修正です。

websocketのconnectionに書き込む際に、Mutexを使用してスレッドセーフになるよう修正しています。


Insert changelog entry for #25615

actioncable/CHANGELOG.mdの修正です。

ActionCable::Connection::Stream#clean_rack_hijackでrack hijackのIOを初期化する前にclose`メソッドを呼び出してIOをcloseするよう修正した、close hijacked i/o socket after use (fixes #25613)の対応について、CHANGELOGにエントリーを追加しています。


Correct changelog layout

actioncable/CHANGELOG.mdの修正です。

各エントリーのインデントがずれてしまっていたのを修正しています。


Merge pull request #25688 from mahnunchik/host-env-var

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

rail server起動時に、hostにHOST envの値を使用するよう修正しています。


Merge pull request #25652 from prathamesh-sonpatki/rm-boot-rails

railtiesのテストの修正です。

使用していないboot_railsメソッドを削除しています。


fix to_param to maximize content

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

Active Recordの#to_paramが、doc上は20文字で値を切る、と説明されていたのが、実際はそれより短くなってしまう(17文字になってしまう)バグがあったのを修正しています。

-                   (param = result.squish.truncate(20, separator: /\s/, omission: nil).parameterize).present?
+                   (param = result.squish.parameterize.truncate(20, separator: /-/, omission: '')).present?

元の実装では#truncateomissionオプションにnilを指定していました。omissionnilを指定しまうと、末尾が...になるのですが、文字数は...込みでカウントされてしまうので、実際想定していた文字数より3文字短くなってしまっていました。

'David Heinemeier Hansson'.truncate(20, omission: '')
# => "David Heinemeier Han"
'David Heinemeier Hansson'.truncate(20, omission: nil)
# => "David Heinemeier ...

omissionに空文字を指定して、付与な文字が末尾に追加されないようにして対応しています。