チャットサイト作りに貢献したgemたち一覧

以前railsでチャットサイトを作った時に役立った、主要なgemを紹介します。
サイトが出来たすぐに書く予定だったのですが、mine craftにハマってしまって遅くなってしまいましたw

twitter-bootswatch-rails

サイトデザインのために、このgemを入れました。このgemを入れるとbootstrapをベースにした記法で、様々なデザインのページが作れます。書き方はほとんどbootstrapと同じです。
デザインは以下のサイトで見れます。
Bootswatch: Free themes for Bootstrap


bullet

n+1問題対策のため、取り入れました。パーフェクトRuby on Railsに載っていたので導入しました。
そもそもn+1問題とはなにかと言うと、アクティブレコードとかを使った時にデータベースに無駄に大量にアクセスが行ってしまうことです。詳しい説明は、以下のサイトが分かりやすかったです。
» Railsライブラリ紹介: N+1問題を検出する「bullet」 TECHSCORE BLOG
n+1問題は"なんとか.each" とか使った時に出やすくて、コードに間違えがなくても普通にデータベース使って普通にrailsを書いていると起こってしまうと思います。

 ちなみにbulletの初期設定をgithubに載っているコードそのままに書いたら動かなくて(英語読めない)、以下のように設定したら動いたので載せておきます。

config/environments/development.rb

config.after_initialize do
Bullet.enable = true
Bullet.alert = true
Bullet.bullet_logger = true
Bullet.console = true
Bullet.rails_logger = true
end

このgemを入れ、N+1問題が発生したページに行くと発生のお知らせと解決法がアラートで表示されます。N+1問題が発生した場合は、アクティブレコードのincludesを使うと回避出来ます。
ちなみにeachの中にeachが混じっているような複雑な場合は、以下のサイトを参考にしました。
【Ruby On Rails3】 複数のテーブルのincludesを書く! | approad


websocket-rails

リアルタイムで通信をするためのgemです。railsでリアルタイムな処理をするのにwebsocket-railsを使うのは主流らしくて、僕もこれを使いました。チャットで使うのにはもってこいでしたが、他にも様々な用法で使えそうです。

gon

これを使えばコントローラーで定義した変数をjsに渡すことが出来ます。上のwebsocket-railsはjsを多様するので、このgemは大変助かりました。
例えば、

gon.say = 'hello'

と、Controller側で定義すれば

alert(gon.say);  //hello

といった感じで使えます。

omniauthとomniauth-twitter

"ツイターでログイン"ができるようにこのgemを導入しました。

meta_request

chromeの開発モードに、実行されたSQLとかが見れるタブが追加されます。
以下のサイトがわかりやすかったです。
Rails開発を補助するGoogle Chrome機能拡張·RailsPanel MOONGIFT


作ったサイト:https://cat-capeyes.herokuapp.com