質問: お世話になります。 現在、数年前にruby1.8.2で開発されたアプリケーションの改修にアサインされた、新人エンジニアです。 よろしくお願いいたします。 rbenvでruby1.8.2を使えるようにまでは出来たのですが、 外部ライブラリのインストール時に度々引っかかってしまい、開発環境の構築が進まない状態です。 ruby1.8.2はすでにサポート終了しており、ネット上にもあまり情報が多くない状態で困ってしまいました。 こういう昔に開発されたアプリケーションの改修における開発環境構築において 何かコツやポイントがあればご教示いただけると誠に幸いです。 OSはUbuntu18.04 LTSを使用しています。 アプリケーションのコードはGitLabからPullできるようにしています。 何卒よろしくお願いいたします。
回答: Ubuntu18.04を使うのは諦めてください。ruby1.8を扱うには新しすぎます。 古いアプリケーションが前提なので、rubyは1.8.2を用意しなければならないでしょうが、ruby自体素直に正しくビルドできるか怪しいです。 アプリケーションが依存するライブラリも、pure rubyで書かれているものならともかく、外部のライブラリ(例えばDBとか)に依存するものは現在のOSが提供するものでは互換性がなくビルドすらままならないものが多数出てきます。古いバージョンを持ってきたとしても、それをビルドするのにまたそちらの互換性問題を解決しなければなりませんし、バイナリパッケージシステムが前提になっている現代の環境との齟齬に起因するトラブルも背負い込むことになります。 まず現在アプリケーションが動いている環境を調査し、それに合わせた環境を作るのがよいでしょう。どのみちテストではその環境が必要になります。 rubyのライブラリは、gemというパッケージ形式になっていれば、 から古いバージョンが取得できます。しかし、1.8の頃だと古すぎて大分怪しいです。これも現在の環境からコピーしたほうが早いです。 Ruby1.8の本は古書店や図書館にいけばまだまだ見つかると思います。 もし、「現在の環境で古いアプリケーションを動くようにする」のがミッションなのであれば、たいていの場合それは諦めて1から作り直した方が早くなると思います。 まずRuby自体メジャーバージョンアップに伴って大きな変更が行われています。それぞれのバージョン間では以降のためにそれなりの配慮がされていますが、1.8->2.3のような大ジャンプは難しいです。1.8->1.9->...のように段階を踏むことが必要です。 それにあわせて、ライブラリも適切なバージョンを選んで移行していく必要があります。現在使用しているものが運良く継続してメンテナンスされていたとしても、互換性を考えつつ環境を作るのはなかなか面倒です。 メンテナンスされていなければどうしようもありません。自分で直すのも、別のライブラリに移行するのも、大変な手間がかかります。