@uents blog

Code wins arguments.

rbenvでRuby環境を構築する

SICPでやっているRubyによるSchemeインタプリタでどうしてもArray#to_hが使いたくなったが、OSX Yosemiteに標準で付属しているRuby 2.0.0にはなかったので、rbenvを使ってみたときのメモ。

環境

  • Mac OSX Yosemite 10.10.2
  • Homebrew 0.9.5

rbenvのインストール

% brew install rbenv ruby-build

.zshrcに以下を追加。

% echo 'eval "$(rbenv init -)"' >> ~/.zshrc
% source ~/.zshrc
% rbenv --version
rbenv 0.4.0

Rubyのインストール

インストール可能なRubyのリストを表示。

% rbenv install --list
Available versions:
  1.8.6-p383
  ...

現時点の最新の安定版の2.2.2をインストール。ちょっと時間がかかる。

% rbenv install 2.2.2
Downloading ruby-2.2.2.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/5ffc0f317e429e6b29d4a98ac521c3ce65481bfd22a8cf845fa02a7b113d9b44
Installing ruby-2.2.2...
Installed ruby-2.2.2 to /Users/uents/.rbenv/versions/2.2.2

バージョンをチェック。*が付いているのが現在使っているバージョン。

% rbenv versions
* system (set by /Users/uents/.rbenv/version)
  2.2.2

バージョンの切換

僕の場合はSICPの作業ディレクトリだけバージョンを上げたいので以下のようにした。

% cd (作業ディレクトリ)
% rbenv local 2.2.2

rubyのバージョンをチェックしてみる。

% ruby --version
ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-darwin14]

それ以外のディレクトリはYosemite標準のまま。

% ruby --version
ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin14]

bundlerのインストール

rubygemsを使うとバージョン毎のパッケージ管理が難しそうなので、bundlerでパッケージを管理する。ただしbundlerだけはrubygemsで取得。

まずは.zshrcでgemのインストール先を指定。

% echo 'export GEM_HOME=$HOME/opt/gems' >> ~/.zshrc
% echo 'export PATH=$GEM_HOME/bin:$PATH' >> ~/.zshrc
% source ~/.zshrc

bundlerをインストール。

% cd ~
% gem install bundler

bundlerによるパッケージ取得

pryとrspecをインストール。

% cd (作業ディレクトリ)
% bundle init

Gemfileを編集。

source 'https://rubygems.org'
gem 'pry'
gem 'rspec'

インストール。

% bundle install --path vendor/bundle

pryを動かしてみる。Array#to_hが使えた!

% bundle exec pry

[1] pry(main)> keys = [:a, :b, :c]
=> [:a, :b, :c]
[2] pry(main)> vals = [1, 2, 3]
=> [1, 2, 3]
[3] pry(main)> keys.zip(vals).to_h
=> {:a=>1, :b=>2, :c=>3}