Skip to content

Instantly share code, notes, and snippets.

@novi
Created February 11, 2012 19:57
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save novi/1803875 to your computer and use it in GitHub Desktop.
Save novi/1803875 to your computer and use it in GitHub Desktop.
Bundlerを使ってプロジェクトごとにGemを管理する

c.f. bundle installするときはpathを指定しよう | FIRN.JP

プロジェクト用のディレクトリを作成して

[~] $ mkdir hogeproj
[~] $ cd hogeproj

Gemfileを編集

# Gemfile
source "http://rubygems.org"
gem "sinatra"

padrinoならgem "padrino"に変える、Railsにしてバージョンを指定するならgem "rails", "3.0.1"

そして、bundlerを使って、hogeprojの閉じた環境にGemをインストール。

[~/hogeproj] $ bundle install --path vendor/bundle

この場合、hogeproj/vendor/bundleにインストールされる。何でもいいが良く使う例。

# main.rb
require 'rubygems'
require 'sinatra'

get '/' do
  'Hello world!'
end

適当な実行させるファイルを用意して、

[~/hogeproj] $ bundle exec ruby main.rb

でSinatraを走らせる。$ bundle exec を付けるとhogeproj環境で実行される。

hogeprojの環境で動作させるために、 Gemパッケージを追加するときはGemfileに必要事項を記述して、$ bundle install する。(2回目以降path指定は不要)

Bundlerを使う利点は、この例のようにhogeproj内の閉じた環境でGemを管理できるところにあります。もちろんGemを管理するという前提もありますが。システムやホームのRuby/Gem環境をクリーンなまま保つことができるので、システム的にも精神衛生的にも良い方法です。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment