rails-dev-box に rbenv 導入

### 準備
 - メモリ割り当てを増やしておく。
※デフォルトのまま（512MB？）だと、json等の各種gemビルド時に、メモリ不足エラーが発生した。
 - ruby-debug-ideを使って、Host->Guestのリモートでバッグをする場合、かつその際に1234番ポートをforwardするなら、その設定も追加しておく

```rb:Vagrantfile
Vagrant.configure('2') do |config|
  config.vm.box      = 'ubuntu/trusty64'
  config.vm.hostname = 'rails-dev-box'

  config.vm.network :forwarded_port, guest: 3000, host: 3000

  # for Remote Debug (Host RubyMine -> Guest ruby-debug-ide)
  config.vm.network :forwarded_port, guest: 1234, host: 1234

  config.vm.provision :shell, path: 'bootstrap.sh', keep_color: true
 
  # increase memory: https://www.vagrantup.com/docs/virtualbox/configuration.html
  config.vm.provider "virtualbox" do |v|
    v.memory = 2048
  end
end
```

### 環境構築 ###

```bash
$ sudo timedatectl set-timezone Asia/Tokyo ※表示を日本時間に

$ cd

$ vi .gemrc   以下2行追加
install: --no-document
update: --no-document

$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
$ git clone https://github.com/rbenv/rbenv-gem-rehash.git ~/.rbenv/plugins/rbenv-gem-rehash
$ git clone git://github.com/ianheggie/rbenv-binstubs.git ~/.rbenv/plugins/rbenv-binstubs

$ vi .bashrc   以下2行追加
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

$ source .bashrc    ※反映

$ rbenv --version   ※rbenv自体のバージョン表示

$ rbenv versions    ※インストールされているruby一覧

※インストール出来るruby一覧
$ rbenv install --list  

※リストを更新
$ cd ~/.rbenv/plugins/ruby-build
$ git pull

※rubyをインストール。rdocをインストールせずに。
$ CONFIGURE_OPTS="--disable-install-rdoc" rbenv install 2.2.5
```
[rbenv-binstubsの代わりにdirenvを使う手](http://cohakim.com/archives/6031)もあるとのこと。

### 新規アプリの作成 ###

```bash
$ mkdir gomi_app
$ cd gomi_app
$ rbenv local 1.9.3-p551
$ rbenv exec gem install bundler
$ rbenv which bundle
/home/vagrant/.rbenv/versions/1.9.3-p551/bin/bundle
$ rbenv which bundler
/vagrant/gomi_app/bundle_bin/bundler

$ rbenv exec bundle init

$ vi Gemfile  ※以下の行のコメントを外す（必要があればバージョン指定も書く）
gem "rails"

$ bundle install --binstubs=bundle_bin --without production

$ bundle exec rails new . --skip-bundle
★skip-bundleは『bundle installをしない』オプション。gemをlocalに入れてない場合は、--skip-bundle 不要＝bundle installしてもらっていいのかな。

※binstubsやwithoutオプションは .bundle/configファイルに記憶されているので、再度指定する必要なし
$ bundle install

※gemがどこにinstallされているか確認する
$ bundle show --paths
```
- bundle install に `--path=vendor/bundle` を付けると、extのビルド？に失敗する。Windows側のディレクトリをvagrant（ubuntu）側でマウントしていて、そこにアプリケーションを作ろうとするとダメみたい。
- --pathでpathの通っていないところ(?)を指定すると、[bundle execを省略する仕組み（rbenv-binstubs）が上手く働かなくなる](http://blog.takapra.com/2013/04/ruby-bundler-basic/)とのこと。
- 参考: [Rails 4.0 と bundler install --binstubs について](http://blog.willnet.in/entry/2013/03/30/220603)


### 既存アプリの移行 ###

```bash
$ rbenv local 1.9.3-p551
$ rbenv exec gem install bundler
$ bundle install --binstubs=bundle_bin --without production
$ rails new . --pretend --skip --skip-test-unit --skip-bundle
$ rails new . --skip --skip-test-unit --skip-bundle
$ rake db:migrate RAILS_ENV=development
```

### 参考リンク ###
[rbenv を利用した Ruby 環境の構築](http://dev.classmethod.jp/server-side/language/build-ruby-environment-by-rbenv/)

bundle exec コマンドを省略する
[Bundler4つの便利な使い方（初期化、インストール、省略する設定など）](http://blog.takapra.com/2013/04/ruby-bundler-basic/)

[Debian 7.0, Ubuntu 13.04 に rbenv をインストールする](http://qiita.com/kazoo04/items/7056704efee66f323ddb)

[Vagrant環境でのbundle installで失敗する](https://tamosblog.wordpress.com/2015/02/22/bundle-install_on_vagrant/)
★これで死ぬほどはまった。ありがとう(^^)

[bundle execを使わずに済む方法（rbenv編）](http://qiita.com/naoty_k/items/9000280b3c3a0e74a618)

[rbenv + bundler 環境で Ruby on Rails4 プロジェクトを新規作成する](http://blog.tokoyax.com/entry/ruby/rails-setup)

[.gitignoreのベストプラクティス](http://qiita.com/asonas/items/abdbf1208e832b5dd0eb)

[CentOS7 on Vagrantでの時刻設定](http://yymm.bitbucket.org/blog/html/2015/03/06/centos7_time_adjust_on_vagrant.html)