今流行のmastodonがRailsらしいので、せっかくだからGemfile読んでみた。

# 今流行のmastodonがRailsらしいので、せっかくだからGemfile読んでみた。

ファイルはこれ。
https://github.com/tootsuite/mastodon/blob/master/Gemfile

# いつもの

- rails
- sass-rails
- uglifier
- jquery-rails
- kaminari
- nokogiri
- rails-i18n
- sprockets-rails
- tzinfo-data



# HTMLレンダ

## hamlit-rails

HAML互換テンプレートエンジンのhamlitですね。

## simple-navigation

メニュー(グロナビみたいなのとか)簡単に作るマン

## simple_form

FormHelperの代替ライブラリ。

## htmlentities

HTML実体文字参照のやつ


# DB

## pg
DBはPostgreSQL!!

## pghero
PostgreSQLのパフォーマンスモニターのダッシュボード。へえー！

## redis, hiredis

redisにアクセスするやつ。
hiredisはCで書かれたredisアクセスライブラリの、ruby-extension

## redis-rails

RailsのセッションストアとしてRedisを使う。


# 認証系

## devise, devise-two-factor'

いつものdeviseー！
MFAにも対応。

## doorkeeper'

oauthとかの、API利用者の認証基盤みたいなやつっぽい。
consumer keyとか。



# jsとか

## react-rails
react.js !!!

## browserify-rails
いつもの。

## autoprefixer-rails

sassでベンダプレフィックス自動で付けるやつ


# バックグラウンド処理

## sidekiq

Rails向けのバックグラウンドワーカーライブラリ。

## sidekiq-unique-jobs

Sidekiqでジョブの排他処理みたいなのやる。


# Rails Controller拡張？

## rabl

JSON APIを組むのを補助するライブラリ。

参考:
RailsでJSON APIを定義するならRABLが便利！ http://qiita.com/yuch_i/items/f6b04e2875f432f8f806

なるほどー。



# Rails Model拡張

## peperclip

```ruby
gem 'paperclip', '~> 5.1'
gem 'paperclip-av-transcoder'
gem 'aws-sdk', '>= 2.0'
```

画像上げるマン。
paperclip-av-transcoder は動画の変換出来るようにするやつの様子。知らなかった。
aws-sdkのバージョンを指定する必要があったりなかったりするのがpaperclipのちょっとつらい所だ。


## rails-settings-cached

いい感じに設定っぽいやつ(Key-Valueストア)を扱えるやつ。
設定はModelにもくっつけられるようす。




# ユーティリティ

## addressable

better URIクラス。標準ライブラリよりも更にRFC準拠ってことらしい。

## twitter-text

twitter的な、 @メンションとか、#ハッシュタグとかをパースするやつ

## whatlanguage

文字列が何の言語でかかれているかを推定するやつ

## http-accept-language

I18nのlocaleをHTTPヘッダから推量するために使用。

## http

HTTP通信するマン。
リモートサーバーとのやり取りに使ってそう。

## httplog

外方向のHTTP通信のロガーらしい。


## link_header, goldfinger, ostatus2

リモートサーバーとのメッセージングの実装に使われている様子。
この辺に詳しい。
https://gist.github.com/okapies/60d62d0df0163bbfb4ab09c1766558e8

## oj

高速なJSONライブラリ

## ox

高速なXMLパーザ。
あれっ nokogiriは？

## fast_blank

String#blank? の高速な実装、らしい。1.2〜20倍早い。マジか。

## rqrcode

QRCode画像作るマン






# テスト

## rspec-rails, rspec-sidekiq

RSpec でテスト書く。

## simplecov

カバレッジレポート生成

## webmock

HTTPアクセスをmock化する。
外部サービスへのアクセスを、テストに組み込むのに使うイメージ。

## fuubar

RSpecの出力をいい感じにするやつ

## fabrication, faker

テストデータ生成。
fabricationは、FactoryGirlみたいなもんか。


# 開発補助

## pry-rails

いつもの。
rails consoleをirbからpryに置き換えるやつ。


## i18n-tasks

I18nで設定されていないやつとかがわかる

## rubocop

Rubyのフォーマットチェッカー & オートフォーマッタ

## better_errors

Railsのエラー画面をもっといい感じにしてくれる。

## binding_of_caller

コールスタックを遡って、そのレシーバを返す。

## letter_opener, letter_opener_web

ActionMailerのメール送信をトラップして、
ブラウザ上で開いたり、ダッシュボードを提供する。

## bullet

N+1クエリ検出

## active_record_query_trace

ログに出力されるSQLクエリダンプに、そのクエリを投げた場所(ファイルパスと行数)を追加するっぽい。


# デプロイツール

## capistrano

- capistrano
- capistrano-rails
- capistrano-rbenv
- capistrano-yarn

いつもの感じ。
yarn用タスクも有るんですね。

## capistrano-faster-assets

変更がない場合に、assets:precompileをスキップする感じ。


# 本番環境用

## rails_12factor

12factorという運用思想に従うように調整するっぽい。
https://12factor.net/

## lograge

ログを1行化する。




# その他

## pkg-config

pkg-configのアダプタライブラリ？
OpenBSDでnokogiriのビルドが出来ない問題に対処するために入れた様子。

## rack-attack

Rackレベルでの、リクエストレートの制御

## rack-cors

Cross-Origin Resource Sharing (CORS) をRackレベルでアレコレしてくれるらしい。

## rack-timeout

Heroku製のリクエストのタイムアウト時に例外投げてくれるヤツ。
うちはHeroku使ってないので、nginxのタイムアウトでいいやーとか思ってたけど、Rackレベルで制御もできるんだな。

## ruby-oembed

oEmbedっていう、URLを簡単にiframe化できる規格？の実装。
別ツイートの埋め込みとか外部リンクとか？
イマイチ使ってる箇所がわからない。

## statsd-instrument

StatsD という情報収集デーモン？のRubyアダプタ？
イマイチわからな。