Rails: Rails 3.2 RC1

Riding Rails: Rails 3.2 RC1: Faster dev mode & routing, explain queries, tagged logger, store


rails4の話もありますが、まずは順番に。
細かいの見ていくと、いろいろ変わってます。

Faster dev mode & routing

開発モードが早くなるみたい。
paneq/active_reload - GitHub
ってやつにinspireされたらしい。
ちょろっと覗いてみると、リクエストの度にクラスをreloadしなおしているのを
変更があったときだけreloadするというものらしい。
これは、いい修正ですね。
(ソース見たけど、ぱっと理解できなかった。この辺分かるようになりたいわ。)



routingも早くなるらしい。特に100以上のリンクがある場合、顕著だとか。
rails/journey - GitHub
tenderlove先生の作品です。


Explain queries

explainが使えるようになると。これもいいですね。
使い方。

puts Person.active.limit(5).explain


詳しくはこちら。
Riding Rails: What's new in Edge Rails: EXPLAIN


SQLite/MySQL/PostgreSQLで可とのこと。

Tagged logger

ログにタグ情報を付加できるっぽい。
使ってみないと利便性がよくわからん。

Active Record Store

KVSとしてARを利用できる。
(本格的なKVSが不要な場合の用途のよう。)

~/.railsrc
さらっと眺めたところ、面白そうなのは下記。

Railties 3.2.0 (unreleased)

・railsrc
rails new時のオプションに「~/.railsrc」が使えるようになったと。


・destroy alias d
rails d model post みたいな感じでdestroyできる。(destroyたまーに使います。)


rails generateのdefaultがstring
rails g scaffold Post title body:text author


rails plugin new
rails g pluginが変更

Action Pack 3.2.0 (unreleased)

・button_tag が追加

#こんなやつ
<%= form_for @post do |f| %>
  <%= f.button %>
<% end %>


・Date helperにuse_two_digit_numbersオプションが追加
年月を0埋め


・layoutにonly、exceptオプションが設定可

class CarsController
  layout 'single_car', :only => :show
end
ActiveSupport 3.2.0 (unreleased)

・Time#all_day/week/quarter/yea

Event.where(created_at: Time.now.all_week)
Active Record 3.2.0 (unreleased)

・migrations時にscopeが渡せるようになったみたい
(いまいちピンとこないが)


ActiveRecord::Relation#pluck
配列を返すらしい。面白い。

Client.pluck(:id)


・Deprecated
軒並み。
set_table_name
set_inheritance_column
set_sequence_name
set_primary_key
set_locking_column

self.table_name=

これで定義するらしい。うん、こっちの方がしっくりくるわ。


・uniq

# before
Client.select('DISTINCT name')

# after
Client.select(:name).uniq


・first_or_create, first_or_create!, first_or_initialize

User.where(:first_name => "Scarlett").first_or_create!(:last_name => "Johansson")

ん〜、これは微妙。