はじめに
Ruby on Rails勉強し始めたころにOfficial Blog: A second spring of cleaningでGoogle Readerが終了するとの告知を受けて、とりあえずRuby on Railsを使ってフィードリーダーアプリを作ってみようと思い、やってみました。
まだ不完全ですが・・・。
やってみたこととか
基盤系
アプリの設置先にはさくらのVPS SSD メモリ2Gを使いました。AWSとかも使ってみたいですがどこまでやれるかわからなかったのでコストを考えて一旦断念しました。OSにはCentOS6を使い、WEBサーバソフトウェアはNginx、Unicornを、データベースにはPostgreSQL 9.3を使いました。PostgreSQLは最初9.2でやってましたが途中で9.3が出たのでアップデートしました。でも別に9.3特有の機能とかは使ってません。
Rails4 アプリ作成
アプリに関しては、すでに同じようなことをやられている方も当然いらっしゃったので、そういった方のブログ記事やgithubにソースを公開されている方のソースを参考にさせていただきました。
Railsに関してはお作法からわからなかったので苦労しました。というか未だにどういう書き方が良いのかなどちゃんと理解できてないです。何かとあるとコントローラで処理させようとしてしまうのでモデルやビューをうまく使い分けるとかActiveRecordの扱い方とか。
とりあえず、前述のようないろいろな方のソースコードを拝見してそれをローカルに取得して少し変更してはそのときの動作を確認してというのを繰り返したり、Railsプロジェクトを何度か立ち上げて写経したり適当に簡単なプログラムを作ったりして感じを覚えていきました。
プログラマブルな思考についても引き続き勉強していきます。
使ってみたGem
Unicorn: Rack HTTP server for Unix and fast clients
最近主流のRack(RubyとRubyアプリケーション/フレームワーク間のインターフェース)対応httpサーバ。
devise
Railsの認証ライブラリの定番。ログイン機能を簡単に実装できます。
pauldix/feedzirra - GitHub
フィードの情報を取得するライブラリ。似たようなライブラリは他にもありましたが、開発が今でも行われているようなのでこれを使わせていただきました。フィードの新規登録時や定期更新時にこのライブラリ経由で情報を取得しています。
ただ、Nokogiriで解析して取得したフィードのURLをfeedzirraに渡しているので、Nokogiriの解析結果から実際のフィードURLが取得できない場合はエラーになってしまいます。他のアプリケーションだとどうやって処理しているのかもう少し調べてみようと思ってます。
Nokogiri
FeedzirraはFeedのURLしか解析できないっぽかったのですが毎回FeedのURLを調べるのが手間だったので、対象サイトのURLからFeedのURLを取得するためにNokogiriを使ってみました。
seyhunak/twitter-bootstrap-rails - GitHub
米ツイッターが開発・提供しているフロントエンドツールのRailsライブラリ。レスポンシブにも対応してデザインの調整が結構楽になります。
javan/whenever - GitHub
Crontab管理ライブラリ。これを使ってフィードデータ取得用のrakeタスクをcrontabに登録して管理してます。
rails/strong_parameters · GitHub
mass_assignment脆弱性を解決するためのライブラリ。従来はモデル側でフィルタリングの制御をしていたけど、Rails4からはこれを使ってコントローラ側で制御するのが標準になる模様。
newrelic/rpm · GitHub
NewRelicでRailsアプリケーションのパフォーマンスをモニタリングするためのGem。
おわりに
自分用のアプリケーションをとりあえずRails4で作ってみました。とりあえず既読管理とか実装したい。
もっと勉強して次は人に使ってもらえるアプリケーションを作ってみたいなぁ。
参考
- Rails + Heroku で俺専用RSSリーダー作った ::ハブろぐ
- Rails3アプリケーション開発で良く使うgemまとめ
- twitter bootstrap railsを使ったら職が見つかり彼女も出来て背も3センチ伸びました。 - ppworks blog
- Wheneverは導入が超簡単なcorntab管理ライブラリGemです![Rails] - 酒と泪とRubyとRailsと
- Rails4.0に含まれる strong_parameters について - willnet.in
- Ruby - ツールを使いたいだけの人のための bundler 入門 (例: vagrant + veewee) - Qiita [キータ]
- 「Ruby on Railsで簡単で素早くWebアプリを開発する」 第4回 Active Recordの入力チェック機能
- [Rials3]Rails3 + ActiveRecord で正しくtimezoneを設定する - Future Journal 〜未来志向で行こう〜
- rails 4 concern 便利 - 鳩舎
- 翻訳 ふとっちょのRails modelをconcernsでダイエットしよう | ntcncp.net