maeshimaの日記

メモ書きです

今週のrailscasts - Subdomains in Rails 3

Railscasts - Subdomains in Rails 3を見て。Rails3になって少しだけsubdomain対応が入ったので、それを拡張してsubdomain-fuとか使わなくても良くするという話。どうせなら完全にRails3側で対応してくれたら楽なのになあ。

ローカルでサブドメインを含むwebサービスを開発する時に使えるtips

hostsファイルにはワイルドカード的な記述が出来ないので、サブドメインを使ったwebサービスをローカルで開発するには必要なだけhostsに記述するか、ローカルにDNSをたてたりする必要があった(僕はローカルDNS派)。

lvh.me というドメインが 127.0.0.1 に紐づけられているらしく、これを開発用のURLにすれば簡単にローカルでサブドメインを使ったwebサービスを開発できるみたい。

request.subdomain

request.subdomainでsubdomainを使える。

request.domain(2)
request.subdomain(2)

のように、引数に数値を入れて.の数を調節できる。

ルーティング

rails3では constraints にsubdomainを指定することが出来るようになった。railscastsではconstraintsの引数にsubdomain処理用のクラスを作って割り当てていた。

constraints(Subdomain) do
  #...
end

ルーティングについては前にメモってた。でも上記のような書き方は初見。newいらないのか。

Rails 3 のルーティング定義について - おもしろWEBサービス開発日記

url_for

ルーティング側にはsubdomainが使えるのになぜかurl_for側ではsubdomainに対応していないので、railscastsではurl_forを上書きしてsubdomain_fuっぽくできるようにうまいことしていた。

cookie

デフォルトだとsubdomain毎にcookieが生成されてしまうので、共通にするために

Rails.application.config.session_store :cookie_store, :key => '_blogs_session', :domain => :all

のようにしていた。