自動テストのためにBundlerとrbenvの環境構築を行う

環境


rbenvは単純にRubyのバージョン(を入れ替える)管理ツール。BundlerはRubyのライブラリ管理ツール

ホーム配下へのインストール

rbenv ディレクトリの作成

% git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
% mkdir -p ~/.rbenv/plugins
% git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build


環境変数の設定

vi ~/.zshrc

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"


.zshrcの読み込み

% source ~/.zshrc


インストール可能なRuby versionの検索

% rbenv install -l
2.0.0-p598
  2.0.0-p643
  2.0.0-p645
  2.1.0-dev
  2.1.0-preview1
  2.1.0-preview2
  2.1.0-rc1
  2.1.0
  2.1.1
  2.1.2
  2.1.3
  2.1.4
  2.1.5
  2.1.6
  2.2.0-dev
  2.2.0-preview1
  2.2.0-preview2
  2.2.0-rc1
  2.2.0
  2.2.1
  2.2.2


% cd ~/.rbenv


% rbenv install 2.2.2

% rbenv rehash

% rbenv versions
* system (set by /Users/developer/.rbenv/version)
  2.2.2

% rbenv local 2.2.2

% rbenv versions
  system
* 2.2.2 (set by /Users/developer/Work/.ruby-version)

% ruby -v
ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-darwin14]

% which ruby
/Users/developer/.rbenv/shims/ruby

rbenv rehashは、RubyやGemでインストールしたファイルの実行ファイルを作成するコマンド。~/.rbenv/shims配下に作成される。


Rubyの有効化

% rbenv global 2.2.2



Bundlerの設定

bundlerのインストール

% rbenv exec gem install bundler

% rbenv rehash

% which bundler
/Users/developer/.rbenv/shims/bundler


有効なgemの確認

% rbenv exec gem list


どこにgemがインストールされたか確認

% rbenv exec gem which {package}
/Users/developer/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/bundler-1.10.5/lib/bundler.rb



Rails projectの設定

Gemfileの作成

% mkdir ~/work

% cd work

% vi Gemfile

// [ Gemfile ]
source "http://rubygems.org"
gem "rails"


gemのインストール

% bundle install --path vendor/bundle

% la
./  ../  .bundle/  Gemfile  vendor/

% bundle list
Gems included by the bundle:
  * actionmailer (4.1.1)
  * actionpack (4.1.1)
  * actionview (4.1.1)
  * activemodel (4.1.1)
  * activerecord (4.1.1)
  * activesupport (4.1.1)
  * arel (5.0.1.20140414130214)
  * builder (3.2.2)
  * bundler (1.10.5)
  * erubis (2.7.0)
  * i18n (0.7.0)
  * json (1.8.3)
  * mail (2.5.4)
  * mime-types (1.25.1)
  * minitest (5.7.0)
  * polyglot (0.3.5)
  * rack (1.5.5)
  * rack-test (0.6.3)
  * rails (4.1.1)
  * railties (4.1.1)
  * rake (10.4.2)
  * sprockets (3.2.0)
  * sprockets-rails (2.3.2)
  * thor (0.19.1)
  * thread_safe (0.3.5)
  * treetop (1.4.15)
  * tzinfo (1.2.2)

--path vendor/bundle をつけてインストールした場合, PackageはRubyの環境下ではなく vendor/bundle 以下にインストールされる。


Rails projectの作成

% bundle exec rails new project --skip-bundle
      create
      create  Rakefile
      create  config.ru
      create  .gitignore
      create  Gemfile
      create  app
      create  app/assets/javascripts/application.js
      create  app/assets/stylesheets/application.css
      create  app/controllers/application_controller.rb
      create  app/helpers/application_helper.rb
      create  app/views/layouts/application.html.erb
      create  app/assets/images/.keep
      create  bin
      create  bin/bundle
      create  bin/rails
      create  bin/rake
      create  config
      create  vendor/assets/javascripts
      create  vendor/assets/javascripts/.keep
      create  vendor/assets/stylesheets
      create  vendor/assets/stylesheets/.keep

もし vendor/bundle 配下でコマンドを実行する場合、--skip-bundle を忘れずつけ、bundle exec xxx を実行するべきである。


実行が失敗する場合

もし間違ったPATHの場合、以下のようにエラーが走る。

% bundle exec rails new xxx --skip-bundle
Could not find i18n-0.7.0 in any of the sources
Run `bundle install` to install missing gems.


パスは以下のように編集する。

# rbenv
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
export PATH="$HOME/.gem/ruby/2.2.0/bin:$PATH"

そうすれば bundle exec rails を実行できる。

% bundle install --path vendor/bundle
Fetching gem metadata from http://rubygems.org/.........
Fetching version metadata from http://rubygems.org/..
Using rake 10.4.2
Installing i18n 0.7.0
Installing json 1.8.3 with native extensions...

...

% bundle exec rails new project --skip-bundle
      create
      create  README.rdoc
      create  Rakefile
      create  config.ru
      create  .gitignore
      create  Gemfile
      create  app

...


一時的にインストールしたRailsフォルダーを削除

RailsをローカルにビルドするためのRailsとbundlerを削除する。

% rm -f Gemfile

% rm -f Gemfile.lock

% rm -rf .bundle

% rm -rf vendor/bundle

% la
./      ../     project/  vendor/


% cd project

% vi Gemfile // write package you want to install

% gem search -r {package_name} // you can search package name

% bundle config build.nokogiri --use-system-libraries // If you can not install nokogiri, before install this command execute.

% bundle install --path vendor/bundle

// I installed below.
gem "selenium-webdriver"
gem "capybara"
gem "rspec"
gem "pry-byebug"
gem "phantomjs"
gem "poltergeist"
gem "database_cleaner"
gem "factory_girl_rails"
gem "shoulda-matchers"
gem 'pry-rails'  # rails console(もしくは、rails c)でirbの代わりにpryを使われる
gem 'pry-doc'    # methodを表示
gem 'pry-byebug' # デバッグを実施(Ruby 2.0以降で動作する)
gem 'pry-stack_explorer' # スタックをたどれる

~~~
Bundle complete! 13 Gemfile dependencies, 59 gems now installed.
Bundled gems are installed into ./vendor/bundle.


spec_helper.rbの作成

% bundle exec rspec --init
  create   .rspec
  create   spec/spec_helper.rb


commentの削除

% vi spec/spec_helper.rb

=begin =end を削除する。


.rb ファイルは以下のように実行する。

% bundle exec rspec project.rb


rbenvのパス確認。

% sudo which rbenv
/Users/okamoto/.rbenv/bin/rbenv


確認コマンド

// RubyにインストールされたGemの確認
% rbenv exec gem list

// パスの確認
% rbenv exec gem which bundler
/usr/local/var/rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/bundler-1.10.6/lib/bundler.rb


ルート直下へのインストール

bundlerのインストール

// rbenvとruby-buildのインストール
% brew install rbenv ruby-build

// Rubyのインストール
% rbenv install 2.2.3

// Rubyの最適化
% rbenv global 2.2.3

// readlineのインストール
% brew install readline

// bundlerのインストール
% rbenv exec gem install bundler

% rbenv rehash

rbenv rehashは、RubyやGemでインストールしたファイルの実行ファイルを作成するコマンド。~/.rbenv/shims配下に作成される。

% cat << EOS >> Gemfile
heredoc> source "http://rubygems.org"
heredoc> gem "rails"
heredoc> gem "selenium-webdriver"
heredoc> gem "capybara"
heredoc> gem "rspec" # launchyはsave_and_open_pageを利用するためのgem
heredoc> gem "pry-byebug"
heredoc> gem "phantomjs"
heredoc> gem "launchy"
heredoc> gem "poltergeist"
heredoc> gem "database_cleaner"
heredoc> gem "factory_girl_rails"
heredoc> gem "shoulda-matchers"
heredoc> gem 'pry-rails'  # rails console(もしくは、rails c)でirbの代わりにpryを使われる
heredoc> gem 'pry-doc'    # methodを表示
heredoc> gem 'pry-byebug' # デバッグを実施(Ruby 2.0以降で動作する)
heredoc> gem 'pry-stack_explorer' # スタックをたどれる
heredoc> EOS

% bundle install

% rbenv exec gem which selenium-webdriver
/usr/local/var/rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/selenium-webdriver-2.48.1/lib/selenium-webdriver.rb


参考サイト

http://qiita.com/windhorn/items/794f3ed50a61bf064f62
http://qiita.com/emadurandal/items/e43c4896be1df60caef0