bundle install したら、指定してないgemまでinstallされてる気がする人へ

# はじめに
bundlerで、``` bundle install ```すると、```Gemfile```で指定された、gemをインストールしますよね。

> Gemfile(5)に指定されたGemをインストールします。

> もし、Gemfile.lockが存在し、Gemfile(5)が更新されていないのであれば、 Bunlderはリモートの供給元からGemを取得しますが、依存性の解決を行うのでは無く、 Gemfile.lockに指定されている依存性を使用します。
引用元: bundle install - RUBYSTUDIO - http://ruby.studio-kingdom.com/bundler/bundle_install

でも、実際```bundle install```してみると、なんかおかしい気がしたんです。
Gemfileに定義してないgemがたくさんインストールされているような気が・・・。

# Gemfile・インストールされたgem
``` Gemfile:Gemfile
source 'https://rubygems.org'


# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.1.12'
# Use postgresql as the database for Active Record
gem 'pg'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 4.0.3'
# 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/rails/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', '~> 2.0'
# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', '~> 0.4.0',          group: :doc

# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
gem 'spring',        group: :development

gem 'rails_12factor', group: :production

gem 'slack-api'

# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'

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

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

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

```

``` :インストールされたGem
  * actionmailer (4.1.12)
  * actionpack (4.1.12)
  * actionview (4.1.12)
  * activemodel (4.1.12)
  * activerecord (4.1.12)
  * activesupport (4.1.12)
  * arel (5.0.1.20140414130214)
  * builder (3.2.2)
  * bundler (1.11.2)
  * coffee-rails (4.0.1)
  * coffee-script (2.4.1)
  * coffee-script-source (1.10.0)
  * erubis (2.7.0)
  * eventmachine (1.0.9.1)
  * execjs (2.6.0)
  * faraday (0.9.1)
  * faraday_middleware (0.10.0)
  * faye-websocket (0.9.2)
  * hike (1.2.3)
  * i18n (0.7.0)
  * jbuilder (2.4.0)
  * jquery-rails (3.1.4)
  * json (1.8.3)
  * mail (2.6.3)
  * mime-types (2.99)
  * minitest (5.8.3)
  * multi_json (1.11.2)
  * multipart-post (2.0.0)
  * pg (0.18.4)
  * rack (1.5.5)
  * rack-test (0.6.3)
  * rails (4.1.12)
  * rails_12factor (0.0.3)
  * rails_serve_static_assets (0.0.4)
  * rails_stdout_logging (0.0.4)
  * railties (4.1.12)
  * rake (10.4.2)
  * rdoc (4.2.1)
  * sass (3.2.19)
  * sass-rails (4.0.5)
  * sdoc (0.4.1)
  * slack-api (1.2.1)
  * spring (1.6.1)
  * sprockets (2.12.4)
  * sprockets-rails (2.3.3)
  * thor (0.19.1)
  * thread_safe (0.3.5)
  * tilt (1.4.1)
  * turbolinks (2.5.3)
  * tzinfo (1.2.2)
  * uglifier (2.7.2)
  * websocket-driver (0.6.2)
  * websocket-extensions (0.1.2)
```

多い・・・。

# なぜこうなったか
Bundlerでは、インストールするgemが依存しているgemを、自動でインストールしてくれるから。

> Gemfileを元にGemパッケージがインストールされます。Gemfile ファイルに書かれたGemパッケージと、それらのGemパッケージが依存する(必要とする)他のGemパッケージも自動的にインストールされます。
引用元: Bundlerを使ったGemパッケージの管理 - RubyLife -http://www.rubylife.jp/rails/ini/index2.html

有名なサイトにも書いてありました。(見落としていた・・・。)

# 各gemが依存するgemの確認
``` [gemをインストールしたディレクトリ]/ruby/[rubyのバージョン]/specifications/[gem名].gemspec ```の中身を読んでみると、書いてあります。

例えば、railsだったら、

``` gemspec:rails-4.1.12.gemspec
    if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
      s.add_runtime_dependency(%q<activesupport>, ["= 4.1.12"])
      s.add_runtime_dependency(%q<actionpack>, ["= 4.1.12"])
      s.add_runtime_dependency(%q<actionview>, ["= 4.1.12"])
      s.add_runtime_dependency(%q<activemodel>, ["= 4.1.12"])
      s.add_runtime_dependency(%q<activerecord>, ["= 4.1.12"])
      s.add_runtime_dependency(%q<actionmailer>, ["= 4.1.12"])
      s.add_runtime_dependency(%q<railties>, ["= 4.1.12"])
      s.add_runtime_dependency(%q<bundler>, ["< 2.0", ">= 1.3.0"])
      s.add_runtime_dependency(%q<sprockets-rails>, ["~> 2.0"])
    else
      s.add_dependency(%q<activesupport>, ["= 4.1.12"])
      s.add_dependency(%q<actionpack>, ["= 4.1.12"])
      s.add_dependency(%q<actionview>, ["= 4.1.12"])
      s.add_dependency(%q<activemodel>, ["= 4.1.12"])
      s.add_dependency(%q<activerecord>, ["= 4.1.12"])
      s.add_dependency(%q<actionmailer>, ["= 4.1.12"])
      s.add_dependency(%q<railties>, ["= 4.1.12"])
      s.add_dependency(%q<bundler>, ["< 2.0", ">= 1.3.0"])
      s.add_dependency(%q<sprockets-rails>, ["~> 2.0"])
    end
    else
      s.add_dependency(%q<activesupport>, ["= 4.1.12"])
      s.add_dependency(%q<actionpack>, ["= 4.1.12"])
      s.add_dependency(%q<actionview>, ["= 4.1.12"])
      s.add_dependency(%q<activemodel>, ["= 4.1.12"])
      s.add_dependency(%q<activerecord>, ["= 4.1.12"])
      s.add_dependency(%q<actionmailer>, ["= 4.1.12"])
      s.add_dependency(%q<railties>, ["= 4.1.12"])
      s.add_dependency(%q<bundler>, ["< 2.0", ">= 1.3.0"])
      s.add_dependency(%q<sprockets-rails>, ["~> 2.0"])
    end

```

と、こんな感じで、依存するgemが書いてあります。
Gemfileで指定していなかった、```activesupport```などが、インストールされていた理由もわかりました。

僕は、これに気づくのに結構時間をかけてしまったので、共有しておきます、