2012年2月29日水曜日

別サーバでassetsを提供する際の覚書


rails3.1.x以降でassets pipe lineを利用する際に、assetsの提供を別サーバにしたい場合は下記の手順で実施する必要があります。

  • config/environments/production.rbを編集する。
    • config.assets.compile = falseにする。
    • config.action_controller.asset_host = "http://www.example.com" として提供サーバを設定する。
  • 開発マシンでrake assets:precompileを実行する。
    • サブディレクトリ配下におきたい場合は、RAILS_RELATIVE_URL_ROOT=/fooの様に環境変数で指定する。
  • manifest.ymlだけコミットする
    • manifest.ymlがあれば論理名をハッシュ付き名に変換可能。
    • public/assetsは無視リストに。public/assets/manifest.ymlだけコミット可能にする。
  • assets自体はassets専用サーバに送る。
    • AWS S3の場合、jammit-s3等を利用。
  • アプリをデプロイする。

2012年2月19日日曜日

Rails contributorsはどこにいるのか?

■概要

久しぶりの更新になります。最近はもっぱらgithubでの活動がメインになってしまいました。

色々なコントリビュータとやりとりをしていると「この人は現地で今何時なんだ?」と思う事が増えました。という事でまずコントリビュータがどこにいるのか調べてみました。

■説明

さてどうやったら調べられるか考えたのですが下記のステップでデータを作成しました。
  1. github APIを利用して、rails contributorsをリストアップします。 https://api.github.com/repos/rails/rails/contributors 
  2. github accountの束が手に入るので、こちらもgithub APIを利用して、profile情報を取得します。 例えばDHHなら、https://api.github.com/users/dhh
  3. 2. で取得した情報を良く見るとlocation情報に、"Chicago, USA"と書いてあるのでこれを緯度経度情報に変換できれば、やりたい事を実現できます。
  4. 色々調べてみると、google maps API v3のジオコーディングリクエストを利用すれば、目的が達成できる事がわかりました。 http://code.google.com/intl/ja/apis/maps/documentation/javascript/services.html#Geocoding
  5. ここまでで得た情報をgoogle maps上にプロットする。
■結果
(全体)都合によりTop300でローケーションが判明した人のみプロットしました。貢献数が多い人ほどZIndexを優先にし、画像サイズも変えてみました。世界に広がっていますね。アフリカ以外 ^o^

(北米)アメリカといっても広いんですね。色々な地域から参加してます。

(ヨーロッパ)アメリカよりも多いぐらいの人が参加していますね。ちょっと意外でした。josevalimさんってここなんですかね?

(南米)最近非常に活発なのは、この地域だと思います。見知った顔が一番多いです^o^

 (アジア)アジアは少なめですが、インドが非常に活発です。日本からは、松田明さんと恥ずかしながら私めがエントリーです。

■まとめ
プロットしてみると改めて、世界から参加しているのがわかりました。また各種APIを組み合わせて物を作るというのも面白いですね!