パーフェクトRuby on Railsに載っていたGem


今更感がありますが、
最近Railsはじめたので読んでみました。
gemすげーと思いましたのでメモします。

こういうのを知っているのと知らないでは、かなり違いますね。。
Railsはじめたばかりの方にはオススメの本だと思います。

[![パーフェクトRuby on Rails](http://ecx.images-amazon.com/images/I/51YrQYJdmPL._AA278_PIkin4,BottomRight,-33,22_AA300_SH20_OU09_.jpg)](http://www.amazon.co.jp/%E3%83%91%E3%83%BC%E3%83%95%E3%82%A7%E3%82%AF%E3%83%88Ruby-Rails-%E3%81%99%E3%81%8C%E3%82%8F%E3%82%89%E3%81%BE%E3%81%95%E3%81%AE%E3%82%8A-ebook/dp/B00P0UR1RU/ref=sr_1_1?ie=UTF8&qid=1415848440&sr=8-1&keywords=%E3%83%91%E3%83%BC%E3%83%95%E3%82%A7%E3%82%AF%E3%83%88ruby+on+rails)

# 第3章 アセット

## Sprockets

Asset Pipelineの基盤となるgem
アセットファイルにアクセスするためのパス管理
アセットのコンパイル
アセットファイル同士の依存生を管理する

## CoffeeScript

## teaspoon,jasminerice,jasmine-rails
Asset Pipelineを経由したユニットテストをすることができる

## Sass

## Turbolinks
高速にページ遷移することができる

## jquery-turbolinks
Turbolinksで画面遷移した際にも、自動でjQuery.redy()に登録したイベントハンドラを呼び出してくれる

# 第4章　Railsのロードパスとレイヤーの定義方法

## active_decorator
モデルとビューを橋渡しするレイヤーを追加できる

## sidekiq
非同期処理を行うライブラリ
※例） 画像アップロード、画像変換、動画の変換処理

# 第5章 開発を効率化するgem

## pry-rails
RailsコンソールでirbではなくPryを利用できるようになる

## pry-byebug
ステップ実行でデバッグを行うことができる

## Hirb
コンソール上のモデルの出力を整形する

※日本語などのマルチバイト文字が入る場合は
hirb-unicodeを一緒にインストールする

## better_errors
例外が発生した際にエラー画面が変更され、スタックトレース、セッショ情報、リクエストパラメータなどが見やすくなる

binding_of_callerと合わせて利用することで、画面上でコマンとを入力し、オブジェクト操作できる

## Spring
railsやrakeコマンドが処理を開始する時間が高速化する

※RSpecを実行する場合はspring-commands-rspecというgemを追加する

## rails-erd
モデルのER図を生成する

# 第6章 実践Webアプリケーション開発

## twitter-bootstrap-rails
本編ではでは使ってませんでしたがbootstrap導入楽ちんでした

## omniauth

ユーザ認証機能を提供してくれる
TwitterのOAuthを利用した認証には「OmniAuth Twitter」を利用する

```
gem 'omniauth', '~> 1.2.2'
gem 'omniauth-twitter', '~> 1.1.0'
```

## Kaminari
ページネーション機能を作る
bootstrap用に 「kaminari-bootstrap」がある

## ransack
モデルの検索インターフェースを簡単に作ることができる

## carrierwave
画像アップロード機能を簡単に作ることができる

## mini_magick
ImageMagickをRubyから扱うことができる


# 第7章 Railsアプリケーションのテスト

## rspec-rails

RailsのテストフレームワークライブラリのRSpec
インストール後にテストしてみると動かなかったのですが、
こちらに対応方法が書いてありました。


> Rails4+RSpec3で新規プロジェクトを作ったときのハマりポイントまとめhttp://qiita.com/youcune/items/3a1e4ef76e71da43e043

``` Gemfile
 group :development, :test do↲
   gem 'rspec-rails', '~> 3.0.0'↲
 end↲

```


## shoulda-matchers

バリデーションのテストをかなり簡潔に記述できるようになります。

```Gemfile
group :test do↲
  gem 'shoulda-matchers', '~> 2.6.0'↲
end↲
```

## fixture replacement
テストのためのモデルオブジェクトを生成してくれます。
カラムの種類が増えたり減ったりした時に便利のようです。

```
group :development, :test do
  gem 'factory_girl_rails','~> 4.5.0'
end
```

## capybara
エンドツーエンドのテスト

```Gemfile
group :test do↲
  gem 'capybara', '~> 2.2.1'↲
end↲
```

## poltergeist
JavaScriptのテスト用
※ poltergeistを使用する場合、テストケースとして実行されるプロセスとは別にサーバ用のプロセスを作成するため、Railsデフォルトのデータベーストランザクション機能は使えないため、「database_cleaner」を使用するそうです。


```Gemfile
group :test do↲
  gem 'poltergeist', '~> 1.5.0'↲
  gem 'database_cleaner', '~> 1.2.0'↲
end↲
```

##simplecov
カバレッジを出力する
> https://github.com/colszowka/simplecov

![](https://camo.githubusercontent.com/5d9b874a778392ff6180d297faa362f0b32fcd62/687474703a2f2f636f6c737a6f776b612e6769746875622e636f6d2f73696d706c65636f762f6465766973655f726573756c742d302e352e332e706e67)

## brakeman
Railsアプリケーションの脆弱性を英的解析する


# 第8章 Railsのインフラと運用

## chef,berkshelf

設定中に以下のようなエラーが出たが
こちらの記事で無事解決
> http://goo.gl/Yc0w3n

```
$ vagrant provision
==> default: Running provisioner: chef_solo...
Generating chef JSON and uploading...
==> default: Running chef-solo...
==> default: stdin: is not a tty
==> default: [2014-10-28T13:00:43+00:00] INFO: Forking chef instance to converge...
==> default: [2014-10-28T13:00:43+00:00] WARN: 
==> default: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
==> default: SSL validation of HTTPS requests is disabled. HTTPS connections are still
==> default: encrypted, but chef is not able to detect forged replies or man in the middle
==> default: attacks.
==> default: 
==> default: To fix this issue add an entry like this to your configuration file:
==> default: 
==> default: ```
==> default:   # Verify all HTTPS connections (recommended)
==> default:   ssl_verify_mode :verify_peer
==> default: 
==> default:   # OR, Verify only connections to chef-server
==> default:   verify_api_cert true
==> default: ```
==> default: 
==> default: To check your SSL configuration, or troubleshoot errors, you can use the
==> default: `knife ssl check` command like so:
==> default: 
==> default: ```
==> default:   knife ssl check -c /tmp/vagrant-chef-3/solo.rb
==> default: ```
==> default: 
==> default: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
```

## knife-solo
chef-soloに特化したコマンドツール

## New Relic
アプリケーションの監視

## cinch
IRC Botフレームワーク

## Airbrake
エラー通知と解析に特化したSaas
オープンソースのerrbitもあるようです。

## serverspec 
サーバの状態をテストするためのツール

# 第10章　Railsを拡張する

## Rack
たくさんのアプリケーションサーバとたくさんのRubyフレームワークとをつなぐ規約