Rubyを無事インストールできたので、次はbundlerをインストールします
パッケージ管理とは
パッケージ管理とは、使用するライブラリ(ある機能のソースファイルの集まり)をインストール、更新するための機能です。 Rubyではgemコマンドでライブラリをインストール、更新できます。
さらに、あるライブラリがさらに他のライブラリを必要としていた場合、自動で必要なライブラリをインストールしてくれます。 この機能を使わないと、以下のようになります (実体験)
- 便利なライブラリAを見つけた!ダウンロードして使おう
- クラスZが見つからないエラー発生。ライブラリAで使われているようだ
- クラスZはライブラリBに入っているそうなので、ライブラリBをダウンロード
- プログラム再実行
- クラスYが見つからないエラー発生。ライブラリBで使われているようだ
- クラスYはライブラリCに入っているそうなので、ライブラリCをダウンロード
- プログラム再実行
- 以下繰り返し
gemとbundler
gemでコンピュータにライブラリをインストールできます。 インストールされたライブラリはコンピュータ内に存在するすべてのプログラムから利用することができます。 gemはPHPのPEARにあたります。
しかし、1つ問題があります。1つのコンピュータで使用できるライブラリのバージョンが1つに限られてしまいます。 例えば、アプリAではライブラリXのバージョン1.3.4を使用しているのにアプリBではバージョン2.8.1が必要という場合にどちらかのバージョンしか使えないという問題に出くわします。 新しい方のバージョンに合わせられればよいのですが、バージョンをあげることで挙動が変わっている場合もあるので、そう簡単にあげられない場合もあります。すでにサービス開始しているアプリの場合は特に。
そこで、アプリ(プロジェクト、プロダクトと呼んだりもする)ごとにどのライブラリのどのバージョンを指定できるかを管理する必要が出てきました。これがbundlerです。 bundlerはphpのComposer, mavenのdependency管理に相当します。
bundlerのインストールと初期設定
gemコマンドでbundlerをインストールする
下記コマンドを入力します。"1 gem installed" という文字が出てくれば成功です。
$ gem install bundler Fetching: bundler-1.12.5.gem (100%) Successfully installed bundler-1.12.5 Parsing documentation for bundler-1.12.5 Installing ri documentation for bundler-1.12.5 Done installing documentation for bundler after 9 seconds 1 gem installed # コマンドの確認 $ which bundler /Users/user/.rbenv/shims/bundler # gemの情報管理場所 $ ls -la ~/.gem total 0 drwxr-xr-x 3 xxxx xxxxx 102 May 26 08:42 specs
bundlerの初期設定
# rubyプロジェクトフォルダを作成して移動 $ mkdir -p ~/Ruby/sample01 $ cd ~/Ruby/sample01 # bundler初期設定 $ bundle init Writing new Gemfile to /Users/user/Ruby/sample01/Gemfile
ファイルが作成されたので中身を確認してみます
$ cat ~/Ruby/sample01/Gemfile # frozen_string_literal: true # A sample Gemfile source "https://rubygems.org" # gem "rails"
bundlerでrdefsのインストール
"パーフェクトRuby on Rails"のサンプル通り、試しにrdefsをインストールします
$ cd ~/Ruby/sample01 # Gemfileにgem rdefsを追記 $ echo 'gem "rdefs"' >> Gemfile $ cat ~/Ruby/sample01/Gemfile # frozen_string_literal: true # A sample Gemfile source "https://rubygems.org" # gem "rails" gem "rdefs" # Gemfileに書かれているパッケージをインストール $ bundle install Fetching gem metadata from https://rubygems.org/ Fetching version metadata from https://rubygems.org/ Resolving dependencies... Installing rdefs 0.0.2 Using bundler 1.12.5 Bundle complete! 1 Gemfile dependency, 2 gems now installed. Use `bundle show [gemname]` to see where a bundled gem is installed. # Gemfile.lockの確認 $ cat Gemfile.lock GEM remote: https://rubygems.org/ specs: rdefs (0.0.2) PLATFORMS ruby DEPENDENCIES rdefs BUNDLED WITH 1.12.5 # bundlerの管理情報 $ ls -l ~/.bundle drwxr-xr-x 3 xxxx xxxxx 102 May 26 22:35 cache
bundlerでrdefsの実行
$ cd ~/Ruby/sample01 $ vi sample.rb $ cat sample.rb class Sample def hello puts 'hello' end end
rdefsのターゲットに作成したスクリプトを指定します
$ bundle exec rdefs sample.rb
class Sample
def hello
環境
参考文献
パーフェクトRuby on Rails |