53242


お世話になります。  
現在、数年前にruby1.8.2で開発されたアプリケーションの改修にアサインされた、新人エンジニアです。  
よろしくお願いいたします。

rbenvでruby1.8.2を使えるようにまでは出来たのですが、  
外部ライブラリのインストール時に度々引っかかってしまい、開発環境の構築が進まない状態です。

ruby1.8.2はすでにサポート終了しており、ネット上にもあまり情報が多くない状態で困ってしまいました。

こういう昔に開発されたアプリケーションの改修における開発環境構築において  
何かコツやポイントがあればご教示いただけると誠に幸いです。

OSはUbuntu18.04 LTSを使用しています。  
アプリケーションのコードはGitLabからPullできるようにしています。

何卒よろしくお願いいたします。


CC BY-SA 4.0
2019-03-05T21:08:18.787
53218
2019-03-06T11:17:09.200
32419
question
ruby ubuntu
Rubyの1.8.2(サポート切れバージョン)での開発環境の構築(2019.3.6時点)


サポートされていない＝何かあったら自分で責任取るってことですよね

選択肢１ バージョンアップ  
[ruby](/questions/tagged/ruby "'ruby' のタグが付いた質問を表示")
（に限らず）開発環境一式新しいバージョンを用意して自作プログラムを新しいプラットフォーム上で動かしてみる。まっとうだけど面倒な道です。過去互換性を切り捨ててバージョンアップを行う傾向のある
[php](/questions/tagged/php "'php' のタグが付いた質問を表示")
などでは結局作り直しなのかも。一通り動作検証が済んだころには主要ライブラリの次のバージョンがリリースされていたりして賽の河原かもしれません。でもサポートも得られそうですし情報収集が楽なのはこっちでしょう。

選択肢２ 野良ビルド  
外部ライブラリの当時のバージョンのソースを入手し野良ビルドします。っていうか商用 UNIX
の世界ではこれが当たり前でした。どうせサポート外バージョンであるわけで、ならば野良ビルドし動作保証も自分でしましょう。ただ、世間情勢の変化とか致命的脆弱性とかの関連で一部ライブラリは最新に更新する必要があったりしますし、それを見極める目が無い人にはお勧めできません。

ポイント１
古いものを使い続けるか最新に更新するかの判断はひとえに情報収集次第なところがあります。日本語に翻訳された記事を待つくらいなら開発元の英語資料を読むほうが手っ取り早くて正確です。

ポイント２ どっちを採用するにせよ手戻りが面倒なので、仮想マシン上で作業しこまめにスナップショットを取るのが良いでしょう。


CC BY-SA 4.0
2019-03-06T01:53:09.723
53224
2019-03-06T01:53:09.723
8589
53218
answer


Ubuntu18.04を使うのは諦めてください。ruby1.8を扱うには新しすぎます。

古いアプリケーションが前提なので、rubyは1.8.2を用意しなければならないでしょうが、ruby自体素直に正しくビルドできるか怪しいです。

アプリケーションが依存するライブラリも、pure
rubyで書かれているものならともかく、外部のライブラリ(例えばDBとか)に依存するものは現在のOSが提供するものでは互換性がなくビルドすらままならないものが多数出てきます。古いバージョンを持ってきたとしても、それをビルドするのにまたそちらの互換性問題を解決しなければなりませんし、バイナリパッケージシステムが前提になっている現代の環境との齟齬に起因するトラブルも背負い込むことになります。

まず現在アプリケーションが動いている環境を調査し、それに合わせた環境を作るのがよいでしょう。どのみちテストではその環境が必要になります。

rubyのライブラリは、gemというパッケージ形式になっていれば、<https://rubygems.org>
から古いバージョンが取得できます。しかし、1.8の頃だと古すぎて大分怪しいです。これも現在の環境からコピーしたほうが早いです。

Ruby1.8の本は古書店や図書館にいけばまだまだ見つかると思います。

* * *

もし、「現在の環境で古いアプリケーションを動くようにする」のがミッションなのであれば、たいていの場合それは諦めて1から作り直した方が早くなると思います。

まずRuby自体メジャーバージョンアップに伴って大きな変更が行われています。それぞれのバージョン間では以降のためにそれなりの配慮がされていますが、1.8->2.3のような大ジャンプは難しいです。1.8->1.9->...のように段階を踏むことが必要です。

それにあわせて、ライブラリも適切なバージョンを選んで移行していく必要があります。現在使用しているものが運良く継続してメンテナンスされていたとしても、互換性を考えつつ環境を作るのはなかなか面倒です。

メンテナンスされていなければどうしようもありません。自分で直すのも、別のライブラリに移行するのも、大変な手間がかかります。


CC BY-SA 4.0
2019-03-06T11:17:09.200
53242
2019-03-06T11:17:09.200
5793
53218
answer