Rails + Heroku で俺専用RSSリーダー作った

Webアプリのリハビリ

ということで、Official Blog: A second spring of cleaningで告知された、Google Reader閉鎖に備え、俺専用RSSリーダーをRuby on Railsで軽めに作ってみた。

read.aho.mu



目的としてはRuby + Railsの学習と、サーバーサイドのリハビリのつもりだったのだけど、簡単すぎて実作業1日分くらいで終わってしまった..(´・ω・`)

自分で登録したフィードを、自分でなんとなく流し読みして、良いと思った記事に♡を付けられるだけなのですが、それがついでにオープンになっているだけ。

色々もにょもにょ

触ってみた箇所について所感など。

Heroku


前からScalaなりNodeなりでHello Worldまでは試してましたが、素直にRailsをデプロイして動くところまで手を入れたのは初。

無料で使えるアドオンを幾つか入れて試してみました。Schedulerは頻繁に使いそうで、使い勝手も良いですね。無料で10minごとに実行できたし十分。


Ruby on Rails

実はちゃんと触ったの初めて。てへ。簡単なことを簡単に実現するには、かなりお手軽だった印象。scaffoldとかmigrationとか改めて優秀な仕組みだなと思う次第。Active Recordについては、記述コードと生成されるSQLの関係にちょっと?な部分も残っていますが概ね良好。

あと、Viewのヘルパの豊富さというか、AjaxでAPI叩くにあたりlink_to 'Label', 'path/to', {:remote => true, :method => 'post'}のような記述が用意されてるのは、かなり新鮮だった。hamlと合わせてよっぽどHTML書きたくないのね感。

他、入れてみたgemメモ。

flyerhzm/bullet
Active Recordの生成SQLに('A`)ウヘァってなって調べてたらN+1問題を自動検知するとか、ナイスなgemがあるとのことだったので導入。検知結果の表示もJavaScript consoleに流したり出来て便利だった。
gregbell/active_admin
管理画面を生成して、モデルの一覧やら基本的なCRUD操作UIを自動生成してくれるgem。かなり脳汁がでた。スゴイネー。一般ユーザーもログイン操作があるようなケースでは、どうカスタマイズするのが良いのだろう?
pauldix/feedzirra
これを使ったフィードのフェッチ処理をrake fetch_feedで実行できるようにして、Heroku Schedulerに登録して定期取得するようにしている。あまりドキュメントが豊富な感じでもなかったけど、簡単に使えた。
amatsuda/kaminari
ページネーション用で、以前ナニカの機会でwill_paginateを試した覚えがあったものの、kaminariのほうがナウいらしいので入れてみた。とはいえ、ほぼデフォルトな感じのまま使っている。

アセットパイプラインを始めとして色々あったのでGruntを使うことも無かったし、RailsのRailsだけで完結する感マジすごい。


New Relic

最後にパフォーマンス監視用に試してみたかったNew Relicが、Herokuのアドオンとしてこれまた簡単に導入できるようだったので試してみた。詳しくは後述の参考URLにある情報を見てもらったほうがよさげ。

サーバーのレスポンスタイムや、クライアントのページロードタイムなど、裏と表の両面からパフォーマンスの状態をチェックできる優れもの。それぞれの処理時間の内訳(DBに時間かかってるとか、hamlの処理がどーとか)もちゃんと分かるし、ボトルネックを検証するのに便利そう。

今のところ初めてGoogle Analyticsを見たときのような、どこを設定してどう見たらよいのだろう感が残っているので、ちゃんと活きている運用サービスで見てみたいです。

参考

コードは ahomu/read.aho.mu で公開しています。以下は参考URL。

ほか、Railsの基本的な書き方などでStack Overflowにお世話になってたけど、読み飛ばしすぎてURL残ってなかった、、。次はScalaで何か作ってみようかしら。