Techioz Blog

Mac Ventura に古いバージョンの Ruby をインストールする方法

概要

古い Rails 5 アプリを開こうとしています。もう何年もコードを書いていないので、覚えるのが大変です… また、新しいコンピューター (Mac 0S Ventura) を持っているので、Homebrew、Xcode、Ruby などを再インストールする必要がありました。 このアプリの Ruby バージョンは Ruby ‘2.4.4’ でした

問題を少しずつ修正していますが、そこで行き詰まっています。

古いバージョンの Ruby をインストールしようとすると、次のようになります。

rbenv install 2.4.4                                                                                                                                                    [(3.2.2)]
To follow progress, use 'tail -f /var/folders/bh/wbvn20493_s066frg6c2wwx00000gn/T/ruby-build.20230615201145.8783.log' or pass --verbose
Downloading ruby-2.4.4.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.4.tar.bz2
Installing ruby-2.4.4...

WARNING: ruby-2.4.4 is past its end of life and is now unsupported.
It no longer receives bug fixes or critical security updates.


BUILD FAILED (macOS 13.4 using ruby-build 20230615)

Inspect or clean up the working tree at /var/folders/bh/wbvn20493_s066frg6c2wwx00000gn/T/ruby-build.20230615201145.8783.nJ19PV
Results logged to /var/folders/bh/wbvn20493_s066frg6c2wwx00000gn/T/ruby-build.20230615201145.8783.log

Last 10 log lines:
../.././include/ruby/ruby.h:1753:56: note: expanded from macro 'rb_intern'
        __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                                                       ^
closure.c:263:14: error: call to undeclared function 'ffi_prep_closure'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
    result = ffi_prep_closure(pcl, cif, callback, (void *)self);
             ^
6 warnings and 1 error generated.
make[2]: *** [closure.o] Error 1
make[1]: *** [ext/fiddle/all] Error 2
make: *** [build-ext] Error 2

解決策

他の人が述べたように、Ruby 2.4.4 は非常に古いため、新しいバージョンをインストールしてから、その新しいバージョンを使用するように Rails アプリを更新することをお勧めします。それが可能であれば、プロジェクトの Ruby バージョンをアップグレードする方法とその理由を説明する詳細なステップバイステップのガイドを書きました。

ただし、最初に Rails アプリを 2.4.4 で実行してから、Ruby と Rails の新しいバージョンに少しずつ更新したいと思うかもしれないことは理解できます。その場合、macOS Ventura に 2.4.4 をインストールすることは間違いなく可能であり、バージョン 2.3.8 以前よりもはるかに簡単です。これについては、macOS に古い Ruby バージョンをインストールするためのガイドで説明しています。

もう 1 つ留意すべき点は、Ruby バージョン マネージャーがいくつかあり、それらがすべて同じように機能するわけではないということです。それらにはそれぞれ異なる長所と短所があります。 rbenv を使用して Ruby 2.4.4 をインストールしようとしているようです。個人的には、最も信頼性が高い Ruby-install をお勧めします。これを使用して、ruby-install 2.4.10 を実行して、Rosetta を備えた M1 Mac に Ruby 2.4.10 を正常にインストールしました。

Ruby バージョンのアップグレードに関する記事で説明したように、どの Ruby バージョンでも常に最新のパッチ バージョンを使用する必要があります。パッチのバージョンは3桁目です。あなたの場合、Ruby 2.4 を使用しているため、2.4.x シリーズの可能な限り最新のもの、つまり 2.4.10 を使用したいと考えています。

インストール方法は次のとおりです。

Intel Mac をお持ちの場合、大まかな手順は次のとおりです。

より詳細なステップバイステップガイドについては、macOS に古い Ruby バージョンをインストールするためのガイドをお読みください。

M1 または M2 チップを搭載した Apple Silicon Mac をお持ちの場合は、Rosetta でターミナルを実行し、Homebrew を含むすべての開発ツールを再度インストールする必要があります。 Rosetta でターミナルを実行するには、次の手順に従います。

Homebrew をインストールできるようになりました。これにより、Rosetta を使用していることが検出され、すべてが /opt/homebrew ではなく /usr/local にインストールされます。

次に、Intel セクションと同じ手順に従います。

あるいは、上記のコメントで述べたように Docker を使用することもできます。私は個人的に Docker を使用しないので、詳細なチュートリアルはありませんが、Rails アプリ用に Docker をセットアップする方法を示すチュートリアルがたくさんあることは知っています。