Ruby 1.8.7 / Rails 2.3.5 の環境作成とRspec導入

大人の事情で超レトロな環境が必要になったのでメモ。 大した内容ではないんですが、あまりに古くてドキュメントも情報も欠乏気味だったので。

導入したいもの Ruby 1.8.7 Ruby on Rails 2.3.5 RSpec 1.3.1 およそ令和時代とは思えないラインナップをお楽しみ下さい。

途中までは最新だろうが何だろうが同じなので、ココらの記事を参考に進めます。

qiita.com

とりあえず既存のRubyが無いことを確認。

[vagrant@localhost ~]$ ruby -v
-bash: ruby: command not found

gitをインストール

[vagrant@localhost ~]$ sudo yum install git
[vagrant@localhost ~]$ git --version
git version 1.8.3.1

rbenvとruby-installをインストール

[vagrant@localhost ~]$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
[vagrant@localhost ~]$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
[vagrant@localhost ~]$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
[vagrant@localhost ~]$ source ~/.bash_profile
[vagrant@localhost ~]$ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
[vagrant@localhost ~]$ rbenv -v
rbenv 1.1.2-2-g4e92322

↑ここまで最新と同じ手順です。

ここで、使用できるバージョンを確認します。

[vagrant@localhost ~]$ rbenv install -l
・・・
1.8.7-preview1
1.8.7-preview2
1.8.7-preview3
1.8.7-preview4
1.8.7
1.8.7-p17
1.8.7-p22
1.8.7-p71
1.8.7-p72
1.8.7-p160
1.8.7-p173
1.8.7-p174
1.8.7-p248
1.8.7-p249
1.8.7-p299
1.8.7-p301
1.8.7-p302
1.8.7-p330
1.8.7-p334
1.8.7-p352
1.8.7-p357
1.8.7-p358
1.8.7-p370
1.8.7-p371
1.8.7-p373
1.8.7-p374
1.8.7-p375
・・・

とお目当ての1.8.7でも大量に出てきてしまいます。 今回は勿論商用環境に導入するわけではないので、パッチレベルなんて気にせず、とりあえずベースのを・・・ということで、'1.8.7'を選択したいところですが・・・

[vagrant@localhost ~]$ rbenv install 1.8.7
Downloading ruby-1.8.7.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.tar.bz2
・・・(中略)・・・
math.c:37:13: error: missing binary operator before token "("
 #elif define(ERANGE)
             ^
make: *** [math.o] Error 1

などと表示されて、うまくいきません。

このエラーは、p374で解消されているらしい(https://makandracards.com/makandra/53455-fix-for-ruby-1-8-7-installation-error)ので、おとなしくp374を導入することにする。 ※ちなみにこのパッチはSSL関係の重要なアップデートも入ってるらしく、どちらにしろp374以上がオススメのよう。

[vagrant@localhost ~]$ rbenv install 1.8.7-p374
Downloading ruby-1.8.7-p374.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p374.tar.bz2
ossl_pkey_ec.c:815:29: error: ‘EC_GROUP_new_curve_GF2m’ undeclared (first use in this function)
                 new_curve = EC_GROUP_new_curve_GF2m;
                             ^
ossl_pkey_ec.c:815:29: note: each undeclared identifier is reported only once for each function it appears in
make[1]: *** [ossl_pkey_ec.o] Error 1
make[1]: Leaving directory `/tmp/ruby-build.20190527132249.10087/ruby-1.8.7-p374/ext/openssl'
make: *** [all] Error 1

今度はまた別の場所でエラー。 何分パッチがないとうまく行かないらしいので、パッチを適用します。 参考→https://qiita.com/kakipo/items/482b32b0c2ec0f9d113c

[vagrant@localhost ~]$ vi patch.diff
# リンク先にあるファイルをコピペして作る。
[vagrant@localhost ~]$ cat patch.diff | filterdiff -x ChangeLog -x test/openssl/test_pkey_ec.rb | rbenv install --patch 1.8.7-p374
# patchコマンドが無いと叱られたら↓やってから再度実行すればOK。
[vagrant@localhost ~]$ sudo yum install patchutils patch
[vagrant@localhost ~]$ rbenv rehash
[vagrant@localhost ~]$ rbenv global 1.8.7-p374
[vagrant@localhost ~]$ ruby -v
ruby 1.8.7 (2013-06-27 patchlevel 374) [x86_64-linux]

やっとこさRubyがインストールされる。

長くなったのでRails/RSpecのインストールは記事を分けます。