Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Rubyのプロジェクト毎のモジュール管理・バージョン管理(rbenv、bundler)まとめ

More than 5 years have passed since last update.

はじめに

動機

しばらくnpm(Node.jsのパッケージ・マネージャ。プロジェクト毎にモジュールをインストールすることができる)を使っていたので、同じようなことをRubyでやってみました。

目標

  1. プロジェクト毎にRubyのバージョンを分ける
  2. プロジェクト毎にインストールするgemを分ける

下準備

RVMのアンインストール

$ rvm seppuku

「切腹」って・・・

あと、.bash_profile.bashrc にもrvmのパスなどが残っているので、消す。

グローバルにインストールされたgemのアンインストール

以下の魔法のようなコマンドで、基本的なgem以外のすべてのgemを削除してしまいます:

$ gem uninstall -axI `gem list --no-versions | egrep -v 'test-unit|rdoc|bigdecimal|io-console|json|minitest|psych|rake'`

rbenvのインストール

$ brew install rbenv ruby-build
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile

インストール可能なRubyのバージョンのリストを表示

$ rbenv install -l
Available versions:
  1.8.6-p383
  1.8.6-p420
...
...

rbenv管理下にRubyをインストール

$ rbenv install 2.2.0

インストール済みRuby一覧を表示

$ rbenv versions
  system
* 2.2.0 (set by /Users/USERNAME/.rbenv/version)
  2.1.5

グローバルにbundlerをインストール

bundlerはグローバルにインストールします:

$ gem install bundler

1. プロジェクトにRubyをインストール

ローカルのフォルダにRubyをインストール

$ mkdir app
$ cd app/
$ rbenv local 2.2.0
$ rbenv version
2.2.0 (set by PROJECT_FOLDER/.ruby-version)

2. プロジェクトにgemをインストール

ローカルにGemをインストール

$ mkdir -p vender/bundle
$ vim Gemfile
$ bundle install --path vender/bundle --binstubs=bundle_bin
  • --path vender/bundleはgemをインストールするフォルダの指定
  • --binstubs=bundle_binはあとでbundle execを省略するためのオプション

ローカルインストール済みの gem のリストを表示

$ bundle list
Gems included by the bundle:
  * rack (1.6.4)
  * rack-protection (1.5.3)
  * shotgun (0.9.1)
  * sinatra (1.4.6)
  * sinatra-cross_origin (0.3.2)
  * tilt (2.0.1)

Gemの実行ファイルの実行

$ rbenv exec shotgun -v

binstubsを設定しているので以下のようにしなくて良いです:

$ rbenv exec bundle exec shotgun -v

IRBの実行

$ rbenv exec irb

補足

rbenv管理下のRubyを削除

$ rbenv uninstall 2.1.5

デフォルトで使うRubyのバージョンを指定

$ rbenv global 2.2.0
$ rbenv version
2.2.0 (set by /Users/USERNAME/.rbenv/version)

ローカルにインストールしたRubyを削除

Rubyのバージョンはデフォルトのものになります。

$ rbenv local --unset

rbenv execを短くする

いちいち入力するのは大変ですよね。

$ alias re='rbenv exec'

参考文献

Ruby の gem をプロジェクト毎に Bundler で管理する - fugafuga.write()
rbenvのよく使うコマンドまとめ - TASK NOTES


ブログやってます:http://weed.nagoya

Feel-Physics
今はHoloLensのアプリを開発しており、技術記事はすべてブログ( http://weed.nagoya )に書いています。以前はSwift、OpenCV+Python、JavaScript、Objective-Cを書いていました。
http://feel-physics.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away