Bundlerとは
BundlerはRuby on Railsで標準採用されている、RubyGemsの依存関係管理ソフトウェアです。
SinatraやピュアなRuby(NonFramework)など、Ruby系であれば使うことが出来ます。
Ruby on Rails専用なわけではありません。
Bundlerのインストール
gem install bundler
これをターミナルで実行すればOKです。
railsなどを既に入れている人はたぶん入ってるかとは思います。
2度実行しても別段害はないです。
Bundlerの使い方
まだプロジェクトのディレクトリがない場合はディレクトリを作成しましょう
mkdir myapp
cd myapp
Gemfileと言われるファイルを作成します。
このファイルに、使用するRubyのGemを記載します。
bundle init
vi Gemfile
bundle init
はGemfileが存在しない場合は新しく作成してくれるbundlerのコマンドです。
Gemfileの中身です。
sourceはほぼ必ず書く事になると思うので、書いて下さい。
3行目以降は、使用するGemを書きます。
source 'https://rubygems.org'
gem 'sinatra'
gem 'sinatra-reloader'
sinatraを使うプロジェクトの場合は、
gem 'sinatra'
を記載、使って下さい。
gem 'sinatra-reloader'
はsinatraをオートリロードするgemです。rubyファイルを編集した際にその内容を自動適用してくれます。
そして、このコマンドを、このディレクトリ内(Gemfileがあるディレクトリ)で実行して下さい。
bundle install
Gemfileに記載したgemと、そのgemを使うために必要なgemがインストールされます。
bundle update
とすると、gemのバージョンなどを上げてくれます。
ただし、Gemfile内で
gem "sinatra", "~> 1.4.2"
といったように、gemのバージョンを指定していると、アップデートされず、そのバージョンのgemが使用されます。
Bundlerの使い方自体はこんなかんじです。
試しに Sinatra Frameworkを使ったアプリでBundlerを使ってみます
先ほどのフォルダにファイルを作成します。
touch myapp.rb
vi myapp.rb
require 'sinatra'
require 'sinatra/reloader'
get '/hi' do
"Hello World!"
end
上記のファイル構造(myappディレクトリ)
myapp.rb
Gemfile
Gemfile.lock (隠しファイル。bundle install
すると作成、更新されます)
http://localhost:4567/hi
にアクセスすると、Hello World!と表示されると思います。
bundlerでsinatraがインストールされたおかげで、sinatraをrequire出来ているのです。
エラーになったら?
bundle install や アプリ起動時などにエラーになることがあります。
その場合はエラー文に従って下さい。
この2つはよく出ます。
- 足りないgemがあるからインストールしてね
- 足りないgemを
gem install
するか、Gemfileに追記してbundle install
して下さい
- 足りないgemを
- 既に同じgemの古いバージョンが入ってるよ
- この場合は古いgemをuninstallして下さい
- gem uninstall 対象のgem名
- どのバージョンを削除するか聞かれるので、全てを選択して、新しく再度bundle installやgem installするか、いらないバージョンを選択して下さい
installは出来てるけど、アプリケーション内でrequire氏忘れていることなどもちょくちょくあります。sinatra-reloaderもですが、gemの名前とrequireするものの名前が違うこともあります。正しいrequire名は、rubygemsなどから見られるgemの説明サイト(大抵の場合はGithubに飛ぶ)から確認して下さい。
一応、このコマンドで、gemがインストール済みかを調べる事ができます。
gem list | grep gemの名前
まとめ
Bundlerはとっても便利なので、ぜひ使いましょう!
gem installではなく、bundle installを使うようにしましょう。
補足: Herokuなどは、GemfileとGemfile.lockがないとデプロイ出来ないですし。