Rails4 にデフォルトで入ってるGemについて調べてみた
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アプリケーションのデバッグ方法