Ruby
Rails
Gem

1人Webサービス開発で使っているGemfileそのまま公開

More than 3 years have passed since last update.

最近個人的に作った写真共有サイトを公開しました。

photoll - スポット写真共有サイト

この写真共有サイトで実際に使っているおすすめGemを晒してみます。

あと、おまけで使ってないけど便利そうなGemとかも紹介。

一人で1からWebサービスを作る過程を書いた拙作のブログエントリもよかったら見てください。

【1人でWebサービス開発】新米Railsエンジニアが無謀にも写真共有サイトを作りました

 

だいぶ長いですが、Gemfileをそのまんま載せました。簡易説明付き。

主要なGemをあとで説明します。


Gemfile

source 'https://rubygems.org'

gem 'rails'
gem 'mysql2'
gem 'haml-rails' # HTMLを簡潔に書ける
gem 'sass-rails' # CSSを効率的に書ける
gem 'bootstrap-sass' # Twitter Bootstrapが使える
gem 'compass-rails' # Sassの機能拡張
gem 'uglifier' # JavaScriptの圧縮
gem 'coffee-rails' # JavaScriptを簡潔に書ける
gem 'jquery-rails' # jQueryが使える

# Authentication
gem 'omniauth' # 外部アカウントでログインできる
gem 'omniauth-twitter' # Omniauthを使ってTwitterログインできる
gem 'omniauth-facebook' # Omniauthを使ってFacebookログインできる

# Uploader
gem 'carrierwave' # 画像アップローダ
gem 'mini_magick' # CarrierWaveでリサイズなどができるようになる
gem 'fog' # CarrierWaveでAmazon S3に保存できるようになる

gem 'jbuilder' # JSONレスポンスを効率的に書ける
gem 'draper' # Presenterレイヤーを追加して、ビューを効率的に書ける
gem 'acts-as-taggable-on' # タグ機能を実装できる
gem 'kaminari' # ページャ
gem 'rails_autolink' # URLの自動リンク化
gem 'rails_config' # 定数管理
gem 'dotenv-rails' # 環境変数管理
gem 'sitemap_generator' # サイトマップ生成
gem 'whenever', :require => false # cronを登録できる
gem 'exception_notification' # エラーが発生したらメールを送ってくれる
gem 'newrelic_rpm' # パフォーマンス監視サービスを利用できる

group :development do
gem 'thin' # 開発用サーバ
gem 'rails-erd' # モデルのER図をPDFで出力してくれる
gem 'spring' # RspecなどでRailsをプリロードする
gem 'rails_best_practices' # Railsのベストプラクティスを教えてくれる
gem 'annotate', git: 'git://github.com/ctran/annotate_models.git' # テーブル情報をモデルファイルに追記してくれる
gem 'capistrano' # デプロイツール
gem 'bullet' # 余計なSQLを検出できる
# gem 'guard' # ファイルの変更を監視して作業を自動化 ※bundlerを使わないほうがいいためコメントアウト
gem 'guard-rspec' # ファイルが変更されたらRsepcを自動実行
gem 'guard-livereload' # ファイルが変更されたらページを自動リロード
gem 'quiet_assets' # アセットログの抑制

# debug
gem 'better_errors' # エラー画面を見やすくする
gem 'binding_of_caller' # better_errorsのエラー画面でREPLが使える
gem 'tapp' # プリントデバッグがしやすくなる
gem 'pry-rails' # railsでpryが使える
gem 'pry-byebug' # pryでデバックコマンドが使える
gem 'awesome_print' # プリントデバッグの出力を整形
gem 'hirb' # SQLの結果を見やすく整形してくれる
gem 'hirb-unicode' # hirbの日本語対応
end

group :test do
gem 'rspec' # テストツール
gem 'rspec-rails' # RailsでRspecが使える
gem 'factory_girl_rails' # テストデータの生成
gem 'database_cleaner' # テスト実行後にDBをクリア
gem 'capybara' # ブラウザでの操作をシミュレートしてテストができる
end

#== pending ====
# gem 'unicorn' # HTTPサーバ
# gem 'powder' # 開発用サーバ
# gem 'pry-remote' # powでデバッグできるようになる



omniauth

https://github.com/intridea/omniauth

外部アカウントにOauthで認証してくれます。

対応している外部アカウントは以下のページに書いてあるのですが、めっちゃあります。

List of Strategies · intridea/omniauth Wiki

ただこのGemがやってくれるのは認証までなので、新規ユーザの作成やログイン状態の管理などは自分で実装する必要があります。

一通りの認証機能を実装したい場合はDeviseを使うといいかな。

OmniAuthで認証機能を作る - RuntimeError

 


carrierwave

https://github.com/carrierwaveuploader/carrierwave

画像アップローダ。

同じものだとpaperclipも有名。

複数のサイズの画像を作れたり、S3にアップロードするのも簡単です。

これで便利なのが、画像のURLを指定すると保存できる機能があるので、Omniauthで取得したユーザのプロフィール画像を簡単に保存できます。

Rails 超お手軽な画像アップローダー CarrierWave の使い方 | Workabroad.jp

 


acts-as-taggable-on

https://github.com/mbleigh/acts-as-taggable-on

タグ機能を実装できます。

タグ機能を自分で実装しようとしていたけど、相当めんどくさくて、これを使ったらすぐに実装できました。

これを使うときは、jQuery Tag-it!を一緒に使うのがオススメです。

jQueryのタグの入力支援プラグインなのですが、ActsAsTaggableOnとのシームレスな連携に感動しました。

#382 Tagging - RailsCasts

 


newrelic_rpm

Application Performance Management & Monitoring | New Relic

全然まだ使っていないですが、ちょー便利だとちまたで噂のモニタリングサービスです。

パフォーマンスやリソースなどの情報をNew Relicのウェブサイトから見れて、無料でも使えます。

これが活躍するほどのサービスにしたいなー

Rails + New Relic ならレスポンスタイム等のパフォーマンス監視が簡単にできるよ - 彼女からは、おいちゃんと呼ばれています

 


rails-erd

Rails ERD – Entity-Relationship Diagrams for Rails

モデルのER図をPDFで出力してくれます。

開発し始めの頃とかはモデルの関係があやふやなので役に立ちます。

Rails ERDを試してみた - rochefort's blog

 


rails_best_practices

https://github.com/railsbp/rails_best_practices

Rails Best Practices | rails best practices list

このサイトで紹介されているRailsのベストプラクティスに則っているか自動でチェックしてくれます。

今回は勉強も含めてWebサービスを作ったので、いろいろ参考になります。

 


capistrano

https://github.com/capistrano/capistrano

Railsのデファクトスタンダードのデプロイツール。

僕の所感はなんかクセのあるツールだと思いますが、いつの間にかデプロイが終わってると感じるぐらいに簡単にデプロイできます。

ただバージョン2と3で大幅な変更がされて、古いドキュメントが多々あるので注意してください。

 


bullet

https://github.com/flyerhzm/bullet

Railsで起きがちな「N+1 問題」を検出してくれます。

これも新米Railsエンジニアには助かります。

» Railsライブラリ紹介: N+1問題を検出する「bullet」 TECHSCORE BLOG

 


guard

https://github.com/guard/guard

ファイルの変更を監視して、登録しておいた動作を実行できます。

私はRspecの自動実行と、LiveReloadを使ってます。

LiveReloadいいですよー

Guardでファイル変更を監視して作業を自動化する - Tech-Sketch

 


better_errors

https://github.com/charliesome/better_errors

エラー画面がめっちゃリッチになります。

デフォルトのエラー画面はかなり質素なのですが、それがすごい見やすくなり、binding_of_callerを入れるとREPLも使えます。

Railsならbetter_errorsを入れるとデバッグがはかどるなぁ - (゚∀゚)o彡 sasata299's blog

 


pry-rails

https://github.com/rweng/pry-rails

Railsでpryが使えます。

binding.pryでブレークポイントを置くことができるし、便利機能がたくさんあるし、これがないと開発ができないです。

Happy Elements Labs: Rubyist必携 pry-railsを使いこなせば幸せになれる

 


powder

Pow: Zero-configuration Rack server for Mac OS X

開発用サーバPowのためのGem。

rails sなんてしなくてもサーバが使えます。

めっちゃ便利なんだけど、powでpryが使うためのpry-remoteがうまく動かなくて今は保留中。

また今度試す。

開発サーバをThinからPowに切り替えて開発効率アップ! (Mac限定) - 酒と泪とRubyとRailsと

 

 


おまけ・よくある機能のGem

僕は勉強のために自前で実装していますが、よくある機能を実装するのに使える(かもしれない)Gemを紹介

 


コメント

自分でコメント機能を作ったときはポリモーフィック関連の勉強になりました。

実装する手間を省きたいなら以下のGemがいいかもです。

https://github.com/jackdempsey/acts_as_commentable

シンプルなコメントシステム

https://github.com/elight/acts_as_commentable_with_threading

返信などの階層構造を持つコメントシステム

 


ソーシャル

今回作ったWebサービスではTwitterライクのフォロー機能もあります。

新米Railsエンジニアにはなかなか厳しかったですが、このチュートリアルで乗り切りました。

Ruby on Rails チュートリアル:実例を使って Rails を学ぼう

これも実装する手間を省きたいなら以下のGemがいいかもです。

https://github.com/cmer/socialization

フォロー・ライク・メンションができるみたい。

 

https://github.com/tcocca/acts_as_follower

こちらはフォローとブロックができるようです。

 


タイムライン

https://github.com/pokonski/public_activity

誰が何をしたかが時系列で流れるタイムライン機能。

軽く一読した限り、すぐに使い方がわからなかったのでちょっと難しそう。

https://github.com/ledermann/unread

未読・既読をつけられる 

 


 

ひとまずこれが公開時点のGemfileです。

なんか自分のGemfileをさらすとか少し恥ずかしい気分ですが、参考になれば幸いです。