LoginSignup
100
96

More than 5 years have passed since last update.

趣味で作っている「Annict」というRails製サービスのGemfileを晒す

Last updated at Posted at 2014-05-17

1人Webサービス開発で使っているGemfileそのまま公開 - Qiita
完全に↑の記事の人気に乗っかろうとしています。本当にありがとうございました。
上記記事で紹介されている「photoll」というスポット写真共有サイトのはてブ数が記事公開後に大きく増えたようなので、僕のサービスでも同じことが起こるのでは…!? と目論んでいます。必死なんです!!

Annict | アニクト - 観ているアニメをシェアしよう
僕が趣味で開発しているWebサービスです。アニメの視聴内容が記録できたり、感想などをTwitter/Facebookにシェアできるサービスです。
これもRailsで作っているサービスなので、そのGemfileの中身をご紹介したいと思います。

Gemfileの内容

各gemについてはこのあと書いていきます。

source 'https://rubygems.org'

ruby '2.1.2'

gem 'rails', '4.0.5'

gem 'action_args'
gem 'activerecord-session_store'
gem 'asset_sync'
gem 'bootstrap-sass'
gem 'bourbon'
gem 'browser'
gem 'coffee-rails'
gem 'devise'
gem 'dragonfly-s3_data_store'
gem 'email_validator'
gem 'enumerize'
gem 'exception_notification'
gem 'figaro'
gem 'flutie'
gem 'font-awesome-sass'
gem 'foreigner'
gem 'jbuilder'
gem 'jquery-rails'
gem 'kaminari'
gem 'koala'
gem 'mysql2'
gem 'newrelic_rpm'
gem 'ngmin-rails'
gem 'omniauth-facebook'
gem 'omniauth-twitter'
gem 'rails-i18n'
gem 'ransack'
gem 'sass-rails'
gem 'schema_plus'
gem 'sidekiq'
gem 'slim'
gem 'twitter'
gem 'uglifier'
gem 'unicorn'

group :development, :test do
  gem 'awesome_print'
  gem 'hirb-unicode'
  gem 'hirb'
  gem 'pry-byebug'
  gem 'pry-rails'
  gem 'rails-flog', require: 'flog'
  gem 'rspec-rails'
end

group :development do
  gem 'better_errors'
  gem 'binding_of_caller' # using better_errors
  gem 'bullet'
  gem 'capistrano'
  gem 'capistrano-rails'
  gem 'capistrano-rvm'
  gem 'capistrano-sidekiq'
  gem 'capistrano-unicorn-nginx'
  gem 'meta_request'
  gem 'quiet_assets'
  gem 'spring-commands-rspec', require: false
  gem 'spring'
  gem 'thin'
end

group :test do
  gem 'capybara'
  gem 'database_rewinder'
  gem 'factory_girl_rails'
  gem 'nyan-cat-formatter'
  gem 'poltergeist'
end

各gemについて

action_args

このプラグインを使うと、コントローラのメソッドの引数として params で渡されるキーを指定すると、その引数から params 内のデータが取得できるようになります。
…うまく説明できないのでコード貼り付けときます。

class HogeController < ApplicationController
  def fuga(piyo)
    render text: piyo
  end
end

もういちいち params とか入力しなくて済みます!

activerecord-session_store

セッション情報をデータベースで管理するためのプラグインです。

asset_sync

app/assets/ 内のファイルを、デプロイ時にAmazon S3などにアップロードしてくれるプラグインです。

bootstrap-sass

Bootstrap をRails + Sassな環境で良い感じに使えるようにしてくれるプラグインです。

bourbon

SassのMixinがいろいろ入っているライブラリです。Compass みたいなやつです。
thoughtbot というアメリカにあるWeb制作会社が作っているライブラリで、個人的にこの会社が好きなのでCompassを使わずこっちを使っています。
(僕レベルの初心者だとどっちを使ってもさして変わらない)

Bourbonとは全く関係ないですが、このthoughtbotという会社が配信している the bot cave というニュースレターがとてもおもしろいのでオススメです。thoughtbot社内で実験的に導入した技術、取り組みや、使うのを止めた技術などが背景も含めて紹介されています。最近配信頻度が落ちているのが残念です…。

browser

アクセスしてきたブラウザの情報を取得したり、ブラウザごとに見せるものを出し分けるためのヘルパーメソッドを提供してくれるプラグインです。

coffee-rails

RailsでCoffeeScriptを良い感じに使えるようにしてくれるプラグインです。

でも最近このプラグインを使うのをやめて、Gulp などでCoffeeScriptのソースコードをコンパイルしようかなと考えて始めています。
実験的に bojovs/rails-gulp-browserify-vuejs-app というRailsアプリを作ったので、良かったら見てみてください。coffee-rails (Sprockets) を止めたおかげで Browserify を使って CommonJSのModules/1.0 の記法で書けるようになるのが熱いです。

devise

ユーザ登録の処理なんかをまとめて提供してくれるプラグインです。

dragonfly-s3_data_store

Dragonfly で動的に生成されるサムネイル画像の元となる画像をAmazon S3で管理するためのプラグインです。
詳しくは以前Qiitaに投稿した「Heroku + Railsな環境で、Dragonflyを使って画像を動的にリサイズする (with Amazon S3/CloudFront) - Qiita」をご覧ください。

email_validator

メールアドレスのフォーマットを検証するバリデータプラグインです。

enumerize

職業や性別など、データベースで管理するのもあれだなあ…というデータ構造を良い感じに管理できるようにしてくれるプラグインです。
同じような機能として、Rails 4.1から ActiveRecord::Enum が提供されましたが、i18nに対応していない気がしたので、Enumerizeを使い続けています。
(そもそもAnnictがRails 4.0系で動いているという背景もある)

exception_notification

運用中にサーバエラー (Railsの例外) が発生したら、メールなどでその内容を送ってくれるプラグインです。

figaro

アプリケーション内で使用する設定値を管理してくれるプラグインです。環境変数に設定値を入れてくれるので、Herokuと相性が良かったです。
(今はHerokuでは運用しておらず、DigitalOceanで運用しています)

flutie

ページタイトルを管理するためのヘルパーや、コントローラやアクション名に対応したHTMLのclassの値を埋め込んでくれるヘルパーを提供してくれるプラグインです。
例えば home#index なページにアクセスしたとき、<body class="home home-index"> というclassを付けてくれるので、CSSのコーディングが捗ります。

font-awesome-sass

Font Awesome をRailsから良い感じに使えるようにしてくれるプラグインです。

foreigner

データベースの外部キー制約を設定できるようにしてくれるプラグインです。

jbuilder

ActiveRecordのオブジェクトなどからJSONのデータ構造を定義するときに使用するプラグインです。

jquery-rails

jQueryをRailsから良い感じに使えるようにしてくれるプラグインです。これもSprocketsを使うのやめたら使わなくなるかと思います。

kaminari

ページネータを簡単に実装できるようにしてくれるプラグインです。

koala

FacebookのGraph APIにRubyからアクセスしやすくしてくれるプラグインです。

mysql2

データベースはMySQLを使ってます。

newrelic_rpm

New Relic を使うためのプラグインです。

ngmin-rails

Annict ではクライアントサイドのJavaScriptフレームワークに Angular.js を採用しています。

angular.module('whatever').controller('MyCtrl', function ($scope, $http) { ... });

例えばAngular.jsを利用して書かれた上のコードは、コードをminifyするとうまく動かなくなります。
ngmin というプラグインを使うと、上記コードを

angular.module('whatever').controller('MyCtrl', ['$scope', '$http', function ($scope, $http) { ... }]);

という感じに自動で変換し、minifyしても動くようにしてくれます。
ngmin-railsは、ngminをRailsから良い感じに使えるようにしてくれるプラグインになります。便利。

…しかし最近はAngular.jsをシンプルにした感じの Vue.js というフレームワークを使いたい欲が高まっているので、このプラグインはいずれ使わなくなるかも知れません。

omniauth-facebook

OmniAuth というOAuth認証を簡単に実装できるプラグインを使ってFacebook認証できるようにするためのプラグインです。

omniauth-twitter

Twitter認証するためのやつです。

rails-i18n

Railsがデフォルトで定義しているi18nの定義を各言語に翻訳しているプラグインです。

ransack

複雑なクエリを書くことなく検索機能が実装できるプラグインです。
デモサイト にあるような検索機能を、フォームに渡すパラメータ名を変えるだけで実装することができます。

sass-rails

SassをRailsで良い感じに(ry
Gulpを使い始めたらこのプラグインも使用しなくなると思います。

schema_plus

create_table :parts do |t|
  t.string :name,         index: true
  t.string :product_code, index: { unique: true }
end

などと書けるようにしてくれるプラグインです。最近導入しました。
外部キー制約の設定もこのプラグインを使ってできるので、Foreigner は使うのやめても良い気がしています。

sidekiq

バックグラウンド処理を管理するプラグインです。

slim

HTMLはSlimの記法で書いてます。

twitter

TwitterのAPIにRubyからアクセスするためのプラグインです。

uglifier

JavaScriptをminifyするためのプラグインです。

unicorn

Rackアプリケーションを動かすためのHTTPサーバです。

awesome_print

rails c などしてRubyのオブジェクトを出力するとき、良い感じの見た目で出力してくれるプラグインです。

hirb

rails c などしてActiveRecordのオブジェクトを出力するとき、良い感じの見た目で出力してくれるプラグインです。

hirb-unicode

hirbをUnicodeに対応させるプラグインです。

pry-rails

irbのすごい版である Pry を、Railsから良い感じに使えるようにしてくれるプラグインです。

pry-byebug

binding.pry したあと、ステップ実行などができるようにしてくれるプラグインです。

rails-flog

rails s したあとに出力され続けるログの見た目を良い感じにしてくれるプラグインです。例えば、

# Parameters
Processing by IssuesController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"VYCWAsE+aAN+zSZq2H3ONNqaU8rlyfbnXLfbwDY1i10=", "issue"=>{"is_private"=>"0", "tracker_id"=>"1", "subject"=>"test ticket", "description"=>"test ticket description", "status_id"=>"1", "priority_id"=>"2", "assigned_to_id"=>"1", "parent_issue_id"=>"", "start_date"=>"2013-11-28", "due_date"=>"2013-11-29", "estimated_hours"=>"5", "done_ratio"=>"10"}, "commit"=>"Create", "project_id"=>"test"}

# SQL
  IssueCustomField Load (0.0ms)  SELECT "custom_fields".* FROM "custom_fields" WHERE "custom_fields"."type" IN ('IssueCustomField') AND (is_for_all = 't' OR id IN (SELECT DISTINCT cfp.custom_field_id FROM custom_fields_projects cfp WHERE cfp.project_id = 1)) ORDER BY custom_fields.position ASC

を、

# Parameters
Processing by IssuesController#create as HTML
  Parameters:
{
                  "utf8" => "✓",
    "authenticity_token" => "VYCWAsE+aAN+zSZq2H3ONNqaU8rlyfbnXLfbwDY1i10=",
                 "issue" => {
             "is_private" => "0",
             "tracker_id" => "1",
                "subject" => "test ticket",
            "description" => "test ticket description",
#         ----------------- 以下省略 -----------------


# SQL
  IssueCustomField Load (0.0ms)
    SELECT
        "custom_fields" . *
    FROM
        "custom_fields"
    WHERE
        "custom_fields" . "type" IN ('IssueCustomField')
        AND (
            is_for_all = 't'
            OR id IN (
                SELECT
#         ----------------- 以下省略 -----------------

のように出力してくれます。

rspec-rails

RSpec使ってます。

better_errors

エラーページにスタックトレースが表示され、クリックすると該当のコード表示されたりと、良い感じのエラーページを表示してくれるようになります。

binding_of_caller

better_errorsのREPL機能を使用するために必要になるプラグインです。エラーが出たあと、該当箇所の変数の中身などがすぐに確認できるようになり、捗ります。

bullet

データベースのN+1問題を回避するためのプラグインです。N+1が起きている箇所をいろいろな方法で通知してくれます。

capistrano, capistrano-rails, capistrano-rvm, capistrano-sidekiq, capistrano-unicorn-nginx

https://github.com/capistrano/capistrano
https://github.com/capistrano/rails
https://github.com/capistrano/rvm
https://github.com/seuros/capistrano-sidekiq
https://github.com/bruno-/capistrano-unicorn-nginx

Capistranoでデプロイしてます。

meta_request

ChromeのDeveloper ToolsからRailsのリクエストの詳細を良い感じに見れるようにしてくれるプラグインです。リクエストの処理にかかった時間や、実行されたSQL、レンダリングされたビューファイルなどが表示されます。

quiet_assets

Asset Pipelineのログをコンパクトにしてくれるプラグインです。

spring, spring-commands-rspec

https://github.com/rails/spring
https://github.com/jonleighton/spring-commands-rspec

Railsの各種コマンドを速く実行するようにしてくれるプラグインです。

capybara

ブラウザの動きをシミュレートしてくれる受け入れテスト用フレームワークです。

database_rewinder

テスト毎にデータを消してくれるプラグインです。Database Cleaner と互換性があり、かつ、より速いらしいです。

factory_girl_rails

テスト用のデータを作成してくれるツールです。

nyan-cat-formatter

テスト実行時の進捗状況をかわいらしく表示してくれるプラグインです。

poltergeist

WebKitでJavaScriptを動作させるためのCapybaraのドライバです。

おしまい

全てご紹介したら結構なボリュームになってしまいました…。

こんな感じのgemを使って作っている Annict を、どうぞよろしくお願いします。m(__)m

100
96
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
100
96