Rails4 にデフォルトで入ってるGemファイルについて、調べてみた

  • 80
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

Railsに触って半年ぐらい経つけど、未だにrails newした時に出来上がるGemfileの中身を理解していたなかったので調べてみた。

「そもそもGemfileとは?」という人はこちらへ⇒http://xxxcaqui.hatenablog.com/entry/2013/02/11/013421

rails newで生成されるGemfile

source 'https://rubygems.org'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.0.0'

# Use sqlite3 as the database for Active Record
gem 'sqlite3'

# Use SCSS for stylesheets
gem 'sass-rails', '~> 4.0.0'

# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'

# Use CoffeeScript for .js.coffee assets and views
gem 'coffee-rails', '~> 4.0.0'

# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby

# Use jquery as the JavaScript library
gem 'jquery-rails'

# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks'

# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 1.2'

group :doc do
  # bundle exec rake doc:rails generates the API under doc/api.
  gem 'sdoc', require: false
end

# Use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'

# Use unicorn as the app server
# gem 'unicorn'

# Use Capistrano for deployment
# gem 'capistrano', group: :development

# Use debugger
# gem 'debugger', group: [:development, :test]

長くなりますが、勉強のために上から順に見ていきます。

rails

まぁ、これはいいか。
ここでバージョンを指定すれば、bundle installした後bundle exec rails で指定したrailsバージョンで作業できる。

sqlite3

データベースですね、わかります。sqlite3はローカルにdb/development.sqlite3というファイルが生成されて、SQLite Database Browserでデータベースの構造を詳しく見ることもできる。ファイルとして保存してあるので、他の人へ渡す時とか楽。しかし、herokuでアプリを作るときはPostgreSQLを使えと言われる。
herokuのリファレンス(英語)を読むとなぜSQLiteが使えないのか書いてある。勝手に翻訳して解釈すると、複数のサーバー(dyno)を立ち上げると、まったく別の環境になるため、お互いのファイル(sqlite3ファイル)を更新することができないし、サーバーが起動中に書き換えられても一時的なファイルとして扱うため、再起動したら元に戻るみたい。怖いですね。素直にsqlite3以外を使いましょう。

Asset Pipeline

次の3つのgemはRails3.1から導入された Asset Pipelineに使われている。詳しくは⇒Rails3.1から導入されたAsset Pipelineがよくわかってなかったから調べた - (゚∀゚)o彡 sasata299's blog

sass-rails

sassです。便利なCSSです。入れ子構造で書けたり、変数が使えたりする。

$blue:#23599b;

.top{
    color:$blue;
    h1{
        font-size: 12px;
    }
}

uglifier

javascriptを圧縮してくれる。
config/environments/production.rbの所で
config.assets.js_compressor = :uglifierで呼び出されている。
ホワイトスペースを削除して、if-else文を三項演算子に変更するなど最適化をしてくれるので、素早く読み込める&難読化の効果が現れてくる。

coffee-rails

CoffeeScriptはJavaScriptに比べて簡潔さと可読性を向上させていて、だいたいJavaScriptよりも1/3程度の行数が削減できる。

therubyracer

Googleが開発したJavaScriptのエンジンであるV8をRubyから使えるようにするgem。他にもJavaScriptエンジンはあるけれど、V8はバージョンが上がるたびに高速化しており、スクリプト言語の中では最速の部類となっているみたい。Which programs are fastest? | Computer Language Benchmarks Gameしかし、gemインストール時で一番つまずくのもこのgemな気がする。

jquery-rails

ウェブブラウザ用のJavaScriptコードを容易に記述できるように設計された、JavaScriptライブラリ。CSSが操作できたり、Ajaxで動きのあるページを作ることが可能。

turbolinks

ページの移動をAjaxに置き換えることで、JavaScriptやCSSの読み込みを省略して高速化してくれる。しかし、ページ移動でJavaScriptで書かれていた広告が表示されないなどのエラーも起こる。英語だが、このサイトで解決策がまとめられている。Turbolinks Compatibility

jbuilder

JSON形式でレスポンスを出力してくれるテンプレートエンジン。Viewで記述できて、部分テンプレート等にも使える。日本語に翻訳されてて分かりやすい⇒#320 Jbuilder - RailsCasts

sdoc

Rubyのソースコードからコメント等を読み取りHTML+CSS+JavaScriptを吐き出して、ブラウザで閲覧しやすいドキュメントを作ってくれる。Sはsearchableのことで、ブラウザ上でクラスやメソッド名を検索できるようになる。

bcrypt-ruby

パスワードの暗号化をしてくれる機能。使い方は次のサイトが分かりやすい。bcrypt-rubyをRailsで使う - ばくのエンジニア日誌

unicorn

Rackアプリケーション向けのHTTPサーバー。RackとはRubyにおけるサーバーとアプリケーション間のインタフェースの役割を果たしていて、Rails以外の様々なフレームワークで実装されたアプリケーションでもサーバー側の構成を変えることなく置き換えることができたりする。
他にもRailsのサーバーは色々あるが、unicornは他のに比べてデプロイ時間が早かったり、メモリ効率が良かったりするらしい。
ちょっと記事としては古いが詳しく他のサーバーと比較して書かれているやつ⇒次世代Ruby on RailsサーバーUnicorn(汎用のRackアプリケーションサーバ)を使ってみた | TechRacho

capistrano

デプロイメントツール。アプリケーションを本番サーバーにインストールしたり、最新版に更新。サーバーの起動、再起動、停止。メンテナンス中への切り替えが可能。

debugger

その名の通りデバッガーツール。ここに詳しく載ってる。
ruby-debugを使ったRuby・Railsアプリケーションのデバッグ方法