rbenv で softlayer_api は動作するか？

# やっぱり ruby を使うなら バージョン切換えが欲しい

SoftLayer API の Ruby用ライブラリ softlayer_api が rvm 環境下では動作しない記事を書いたのですが、やっぱり、Ruby でアプリを開発するのであれば、バージョン切換え機能は欲しいところです。

グーグル先生に、どっちが主流かと訪ねてみると、以下の様に圧倒的に rvm なんですが、rbenvなら動作する予感がしたので、試してみる事にしました。（コメントに検索条件を変えて追加しました）

> rvm    約 8,970,000 件 
rbenv  約 351,000 件


# 結論はどうよ？

softlayer_api は、rbenv環境下のrubyで、あっさり動作しました＼（＾ ＾）／ バンザーイ 


```lang:softlayer_apiのインストール
chef@chef-zero:~$ gem install softlayer_api
--- 途中省略 ---
2 gems installed
```
rvmでは動作しなかった softlayer_api を利用した ruby プログラムは以下のとおり、正常に動作した。

```lang:softlayer_apiを利用したプログラムの実行
chef@chef-zero:~$ ./test1.rb 
"Maho"
```
このプログラムを説明すると、アカウント情報の名前を取得して表示するだけの簡単なコードです。これが動けば、サーバーをオーダーしたりキャンセルする事も可能なので、これで検査するのが良いので準備しました。

```
#!/usr/bin/env ruby 
# encoding: utf-8
#
require 'rubygems'
require 'softlayer_api'

USERNAME = '*********`
API_KEY = '****************************************************************'

client = SoftLayer::Client.new(username: USERNAME, api_key: API_KEY)
resp = client['Account'].getObject
p resp['firstName']
```


# 環境セットアップ方法

rubyをビルドするツール、および、バージョン切換えのソフトウェアの導入

```
# apt-get install rbenv ruby-build -y
```
それから今回利用しているのは、debian なので、sudo と ufw は最初から入っていないので、安全のために導入します。

```
# apt-get install sudo ufw -y
```

一般ユーザーとして chefを追加して、sudoresに以下のエントリを追加します。

```lang:/etc/sudoers
chef    ALL=(ALL) NOPASSWD: ALL
```

プロビジョニングの際に指定したSSH鍵で、chefユーザーでもログインできる様に、鍵をコピーしておきます。

```
# cp -r .ssh /home/chef
# chown -R chef:chef /home/chef/.ssh/
```

再度ログインしなおして、設定が正しいことを確認しておきます。

```
imac$ ssh chef@10.132.253.17 -i key/takara3

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
chef@chef-zero:~$ 
```


# Ruby のバージョンを指定しての導入

今回の設定は、ユーザーに限定して、指定の ruby のバージョンが動作する様にします。このため、以下のコマンドで、シェルの初期化ファイルに設定を追加します。

```
# rbenv init >> ~/.bash_profile 2>&1
```
ログアウトして、再度ログインして環境設定を有効にします。　その後、以下のコマンドで、インストール可能な ruby のバージョンを調べます。

```
chef@chef-zero:~$ rbenv install -l
Available versions:
  1.8.6-p383
  1.8.6-p420
  1.8.7-p249
  1.8.7-p302
```
必要な ruby のバージョンを指定して、以下のコマンドでインストールします。

```
chef@chef-zero:~$ rbenv install 2.0.0-p576
Downloading ruby-2.0.0-p576.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/9f5a593d81768c856155be6b2d2e357b961b5c43e04ba54c1ee511987fac2b66
Installing ruby-2.0.0-p576...
Installed ruby-2.0.0-p576 to /home/chef/.rbenv/versions/2.0.0-p576
```
次のコマンドで、現在の環境の ruby のバージョン設定を調べ、ruby コマンドのバージョン表示と比較して確認します。

```
chef@chef-zero:~$ rbenv local
2.0.0-p576
chef@chef-zero:~$ ruby -v
ruby 2.0.0p576 (2014-09-19 revision 47628) [x86_64-linux]
```


# Ruby SoftLayer API のインストール 
Ruby の実行環境が整備できたら、SoftLayer API の Ruby 版をインストールします。

```
chef@chef-zero:~$ gem install softlayer_api
Fetching: configparser-0.1.4.gem (100%)
Successfully installed configparser-0.1.4
Fetching: softlayer_api-3.1.1.gem (100%)
Successfully installed softlayer_api-3.1.1
Parsing documentation for configparser-0.1.4
Installing ri documentation for configparser-0.1.4
Parsing documentation for softlayer_api-3.1.1
Installing ri documentation for softlayer_api-3.1.1
2 gems installed
```

# まとめ
softlayer_api は、rbenvで動作する事が確認できました。