Ruby初心者がWebSocket 01.環境準備

亡備録として作業内容をメモ。
とりあえず、Ruby初心者なので、まずは環境構築が目的。

簡単に環境を書いておきます。

CentOS

#RubyのInstall
まずはRubyの環境管理をしてくれるrbenv をインストールします。

私の場合は/usr/localにインストールするので

```
cd /usr/local
git clone git://github.com/sstephenson/rbenv.git
```

ただし、いつものごとく、Proxy経由したいといけないのでProxyの設定をする。

```
git config --global http.proxy http://****:8080
git config --global https.proxy http://***:8080
git config -l
```

最後のコマンドで追加されていればＯＫ。

次に必要なプラグイン

```
# mkdir /usr/local/rbenv/plugins
# cd /usr/local/rbenv/plugins
# git clone git://github.com/sstephenson/ruby-build.git
```

このあたりは普通に【Ruby】, 【Install】でGoogle先生に聞くと返ってくるので、簡単に。

で、最終的には

```
rbenv install -l
```

このコマンドでインストールできるバージョンのリストが取れる。

うちの場合は

```
Available versions:
  2.1.0
  2.1.1
  2.1.2
  2.1.3
  2.1.4
  2.1.5
  2.1.6
  2.1.7
  2.1.8
  2.2.0-dev
  2.2.0-preview1
  2.2.0-preview2
  2.2.0-rc1
  2.2.0
  2.2.1
  2.2.2
  2.2.3
  2.2.4
  2.3.0-dev
  2.3.0-preview1
  2.3.0-preview2
  2.3.0
  2.4.0-dev
```

となるので、2.2.4を入れることにする。

```
rbenv install 2.2.4
```

コマンドをうち、エンターキーの途中で気づいた。
Proxyひつようじゃね？？

```
rbenv install 2.2.4
Downloading ruby-2.2.4.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.4.tar.bz2
error: failed to download ruby-2.2.4.tar.bz2

BUILD FAILED (CentOS 6.5 using ruby-build 20160130-6-g9e57fb0)
```

やっぱりだめだった。
調べてみるとwgetとcurlでProxyが必要らしい。

ということで、rbenvのビルド設定ファイルを書き換える。

```
$ vi /usr/local/rbenv/plugins/ruby-build/bin/ruby-build

http_head_curl() {
  options=""
  [ -n "${IPV4}" ] && options="--ipv4"
  [ -n "${IPV6}" ] && options="--ipv6"
  curl --proxy http://****.**.**:8000 -qsILf ${options} "$1" >&4 2>&1
}

http_get_curl() {
  options=""
  [ -n "${IPV4}" ] && options="--ipv4"
  [ -n "${IPV6}" ] && options="--ipv6"
  curl --proxy http://****.**.**:8000 -q -o "${2:--}" -sSLf ${options} "$1"
}

http_head_wget() {
  options=""
  [ -n "${IPV4}" ] && options="--inet4-only"
  [ -n "${IPV6}" ] && options="--inet6-only"
  wget -e HTTP_PROXY=****.**.**:8000 -q --spider ${options} "$1" >&4 2>&1
}

http_get_wget() {
  options=""
  [ -n "${IPV4}" ] && options="--inet4-only"
  [ -n "${IPV6}" ] && options="--inet6-only"
  wget -e HTTP_PROXY=****.**.**:8000 -nv ${options} -O "${2:--}" "$1"
}

```

で、再度実行。

```
$ rbenv install 2.2.4
Downloading ruby-2.2.4.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.4.tar.bz2
Installing ruby-2.2.4...
```

おおぉ、いけたか？？？と思ったら・・・。

```
$ rbenv install 2.2.4
Downloading ruby-2.2.4.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.4.tar.bz2
Installing ruby-2.2.4...

BUILD FAILED (CentOS 6.5 using ruby-build 20160130-6-g9e57fb0)

Inspect or clean up the working tree at /tmp/ruby-build.20160223183815.134658
Results logged to /tmp/ruby-build.20160223183815.134658.log

Last 10 log lines:
installing capi-docs:         /usr/local/rbenv/versions/2.2.4/share/doc/ruby
The Ruby openssl extension was not compiled.
The Ruby readline extension was not compiled.
ERROR: Ruby install aborted due to missing extensions
Try running `yum install -y openssl-devel readline-devel` to fetch missing dependencies.

Configure options used:
  --prefix=/usr/local/rbenv/versions/2.2.4
  LDFLAGS=-L/usr/local/rbenv/versions/2.2.4/lib
  CPPFLAGS=-I/usr/local/rbenv/versions/2.2.4/include
```
だめだった。。。そういえばRubyインストール時に必要なパッケージ入れておいたほうがいいとGoogle先生で行き着いたサイトにて書いてあった気がする。。。
ということで、記載されているとおりに入れる。

```
$ yum install -y openssl-devel readline-devel
```

で、もう一回。

```
$ rbenv install 2.2.4
Downloading ruby-2.2.4.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.4.tar.bz2
Installing ruby-2.2.4...
Installed ruby-2.2.4 to /usr/local/rbenv/versions/2.2.4
```

完了。長かった・・・・。

まずはバージョンの確認

```
$ ruby -v
rbenv: ruby: command not found

The `ruby' command exists in these Ruby versions:
  2.2.4
```

あれ？？？よく分からないのでGoogle先生。
どうやらrbenv経由でインストールすると、バージョンごとにシェルの実行環境を管理しているらしい。
ということでそれを設定してあげる。

```
$ rbenv shell 2.2.4
```

なんの応答もないけど、コレでいいのか？？と思いつつ。

```
$ ruby -v
ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-linux]
```

ようやくＯＫ。
で、ここから。WebSocketのインストール

#　WebSocketのインストール

Rubyにはgemというパッケージングシステムがる。
yumみたいなもん。と勝手に解釈。

それを経由すると簡単にインストールできるらしい。

```
$ gem install em-websocket
```

ここでデジャブ。。Proxy。。。

```
$ gem install em-websocket
ERROR:  Could not find a valid gem 'em-websocket' (>= 0), here is why:
          Unable to download data from https://rubygems.org/ - Errno::ETIMEDOUT: Connection timed out - connect(2) for "api.rubygems.org" port 443 (https://api.rubygems.org/specs.4.8.gz)
```

やっぱりでたね。。。。

```
$ gem install em-websocket --http-proxy http://****.**.**:8000
Fetching: eventmachine-1.0.9.1.gem (100%)
Building native extensions.  This could take a while...
Successfully installed eventmachine-1.0.9.1
Fetching: http_parser.rb-0.6.0.gem (100%)
Building native extensions.  This could take a while...
Successfully installed http_parser.rb-0.6.0
Fetching: em-websocket-0.5.1.gem (100%)
Successfully installed em-websocket-0.5.1
Parsing documentation for eventmachine-1.0.9.1
Installing ri documentation for eventmachine-1.0.9.1
Parsing documentation for http_parser.rb-0.6.0
Installing ri documentation for http_parser.rb-0.6.0
Parsing documentation for em-websocket-0.5.1
Installing ri documentation for em-websocket-0.5.1
Done installing documentation for eventmachine, http_parser.rb, em-websocket after 9 seconds
```

ようやくでけた。。。。
長かった。けど、次回からサンプル。といっても、既に書かれておられる方がいるので、それを参考にするだけなので、次回は短いかも。