ラベル ruby の投稿を表示しています。 すべての投稿を表示
ラベル ruby の投稿を表示しています。 すべての投稿を表示

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された。めでたし。

Windows8にrubyを入れてみる

httpclientを作成してみようと思い、何で作ろうか考えたのだが、javaは以前作成したことがあるので、別の言語を使った見ようと思う。
で、vagrantやchefで最近rubyを使うことがあるので、折角なのでrubyをチャレンジしてみる。
(ちなみに本職はインフラエンジニアですが、開発は十数年前にやったっきりで、あとはちょっとしたツールを作っているだけ。趣味みたいな程度です)。

で、vagrantでもrubyがインストールされているので、まずは複数バージョンを入れる方法を
調べてみたところ、windows環境ではpikというツールでできそうなので、やってみた。

現行の状態は、vagrantでインストールされたruby環境があるので、そこからスタートする。
ちなみに、バージョンは、1.9.3のようでした。(rubyのパスは環境変数に通してある)

  >ruby -v
  ruby 1.9.3p448 (2013-06-27) [i386-mingw32]

1.pikをインストールする

  d:\tools\pikにpikをインストールする。

  >gem install pik
  >mkdir d:\tools\pik
  >install_pik  d:\tools\pik

 で、d:\tools\pikを環境変数pathに通しておく。

2.rubyをインストールしてみる

 rubyの現時点の最新の安定バージョンの2.0をインストールしてみる。
  インストールパスを指定したいので、

  >pik config downloads=D:\Tools\pik\download
  >pik config installs=D:\Tools\pik\install

  で設定。内容を確認する

  >pik config
  ** CURRENT CONFIGURATION **
  
  193: ruby 1.9.3p448 (2013-06-27) [i386-mingw32] *
       path: D:\HashiCorp\Vagrant\embedded\bin
  
  ** GLOBAL CONFIGURATION **
  
  ---
  download_dir: D:\tools\pik\download
  install_dir: D:\tools\pik\install

 OKっぽい。次にインストールできるモジュールを確認してみる。

  >pik list -r
  ---
  DevKit:
    3.4.5r3: http://rubyforge.org/frs/download.php/66888/devkit-3.4.5r3-20091110.7z
  IronRuby:
    0.3.0: http://rubyforge.org/frs/download.php/53552/ironruby-0.3.0.zip
    0.5.0: http://rubyforge.org/frs/download.php/57126/ironruby-0.5.0.zip
       ・
       ・
       ・
  Ruby:
       ・
       ・
       ・
    2.0.0-p0: http://rubyforge.org/frs/download.php/76807/ruby-2.0.0-p0-i386-mingw32.7z
    2.0.0-p195: http://rubyforge.org/frs/download.php/76957/ruby-2.0.0-p195-i386-mingw32.7z
  >

 ということで、ruby 2.0.0-p195をインストールみる

  >pik install ruby 2.0.0-p195

 で無事インストール完了。

 3.rubyを切り替えてみる

  使うバージョンのrubyを切り替えてみる。

  >pik use 200
  >ruby -v
  ruby 2.0.0p195 (2013-05-14) [i386-mingw32]

  >pik use 193
  >ruby -v
  ruby 1.9.3p448 (2013-06-27) [i386-mingw32]

 おぉー。ばっちり。で、最後に各種設定情報を確認してみる。

  >pik info
  C:\Users\chika>pik info
  pik 0.2.8

  ruby:
  interpreter:  "ruby"
  version:      "2.0.0"
  date:         "2013-05-14"
  platform:     "i386-mingw32"
  patchlevel:   "195"
  full_version: "ruby 2.0.0p195 (2013-05-14) [i386-mingw32]"
  
  homes:
  gem:          "D:\Tools\pik\install\Ruby-200-p195\lib\ruby\gems\2.0.0"
  ruby:         "D:\tools\pik\install\Ruby-200-p195"
  
  binaries:
  ruby:         "D:\tools\pik\install\Ruby-200-p195\bin"
  irb:          "D:\tools\pik\install\Ruby-200-p195\bin\irb.bat"
  gem:          "D:\tools\pik\install\Ruby-200-p195\bin\gem.bat"
  rake:         "D:\tools\pik\install\Ruby-200-p195\bin\rake.bat"
  
  environment:
  GEM_HOME:     ""
  HOME:         "C:/Users/xxxx"
  IRBRC:        ""
  RUBYOPT:      ""
  
  file associations:
  .rb:
  .rbw:

  >

終了。