2013年9月22日日曜日

Windows8にrubyを入れてみる(その2)

rubyの環境にライブラリ(gem)管理を簡易化するためのbundlerというツールを入れてみる。これを入れると、
 ・他の環境で同じものを作るときも容易にgemリも合わせて環境構築ができる。
 ・通常のgemでは、依存関係を最新のものでカバーされてしまうらしい。また同じ環境で同じgem
  でも異なるバージョンのgemを使い分けたいときなどにも対応できる。
ということができるようです。
つまり、rubyをpikでバージョン管理し(Linuxだとrbenv)、gemをbundlerで管理ってことですね。
便利そうです。ということで入れてみます。

条件は以下の通り。
 ・Windows8
 ・rubyは2.0.0
 ・アプリAのためのgemのセットを作る
です。

1.bundlerのインストール

 まずはbundlerをインストールしてみる。

  >gem install bundler
  Fetching: bundler-1.3.5.gem (100%)
  Successfully installed bundler-1.3.5
  Parsing documentation for bundler-1.3.5
  Installing ri documentation for bundler-1.3.5
  1 gem installed

 で簡単だけど終了。

2.アプリA用の設定をする

 アプリA用フォルダ(d:\program\a)を作成し、そこを基点にgem環境を作る。

  >mkdir d:\program\a
  >cd d:\program\a
  >bundle init
  d:\program\a>bundle init
  Writing new Gemfile to d:/program/a/Gemfile

 gemfileが作成されたので、これを修正し、必要なgemを記載する。今回必要なgemとしてはこの
 あとに作る予定のアプリで使う、mechanizeを入れてみる。以下設定内容。

  Gemfile
  ===
  # A sample Gemfile
  source "https://rubygems.org"

  # gem "rails"
  gem "mechanize"
  ===

 そのあとで、インストールをする。この時bundlerの--pathオプションを使うと、gemのインストール
 先を指定することができる。もし間違ったら、ディレクトリごと削除すればよいだけなので、便利
 らしい。

  >bundle install --path gem
  Fetching gem metadata from https://rubygems.org/..........
  Fetching gem metadata from https://rubygems.org/..
  Resolving dependencies...
  Installing unf_ext (0.0.6)
  Installing unf (0.1.2)
  Installing domain_name (0.5.13)
  Installing http-cookie (1.0.2)
  Installing mime-types (1.25)
  Installing net-http-digest_auth (1.4)
  Installing net-http-persistent (2.9)
  Installing mini_portile (0.5.1)
  Installing nokogiri (1.6.0)
  Installing ntlm-http (0.1.1)
  Installing webrobots (0.1.1)
  Installing mechanize (2.7.2)
  Using bundler (1.3.5)
  Your bundle is complete!
  It was installed into ./gem

  >

  無事インストールができた!

3.bundle環境でのアプリの実行

 bundle環境でアプリを実行するには

  >bundle exec [アプリ名]

 とするらしい。これはアプリを作成した時に改めて試そう。

4.設定ファイルをgitで管理

 bundlerで他の環境でも同一の環境を作るには、アプリA用フォルダ直下に作成されている
 「Gemfile」と「Gemfile.lock」を管理すればよいらしい。Gemfile.lockにはインストールされたgem
 の依存関係やバージョン情報が記載されている。

  >notepad .gitignore
  ===
  .bundle
  gem
  ===
  >git init
  Reinitialized existing Git repository in d:/program/a/.git/

  >git add -A
  warning: LF will be replaced by CRLF in Gemfile.
  The file will have its original line endings in your working directory.
  warning: LF will be replaced by CRLF in Gemfile.lock.
  The file will have its original line endings in your working directory.

  >git commit -m "ruby 2.0.0 initial commit"
  [master (root-commit) a39b353] ruby 2.0.0 initial commit
  warning: LF will be replaced by CRLF in Gemfile.
  The file will have its original line endings in your working directory.
  warning: LF will be replaced by CRLF in Gemfile.lock.
  The file will have its original line endings in your working directory.
   3 files changed, 41 insertions(+)
   create mode 100644 .gitignore
   create mode 100644 Gemfile
   create mode 100644 Gemfile.lock

  >git log
  commit a39b35337544c6abbe16272350bcd5be897d00ac
  Author: Chikayuki Hayashi <hayachi617@gmail.com>
  Date:   Sun Sep 22 03:31:02 2013 +0900

      ruby 2.0.0 initial commit
  >

 これでgitにUPされた。めでたし。

0 件のコメント:

コメントを投稿