Techioz Blog

MacOS アプリ用のスタンドアロン RubyGem をパッケージ化する

概要

ユーザーに最高のユーザー エクスペリエンスを提供し、必要なパッケージをすべてインストールしないようにするには、Ruby、RubyGems、および一部の gem パッケージ (pod、xcodeproj) を MacOS アプリにパッケージ化する必要があります。次に、MacOS アプリ内のコマンド ラインから pod と xcodeproj を使用します。

カスタム インストール フォルダー ./configure —prefix= を指定してソースから Ruby をビルドしようとすると、Ruby (Gem を含む) に付属する一部の実行可能ファイルにこのインストール フォルダーへの静的参照が存在します。

これらの実行可能ファイル内のシバンを #!/usr/bin/env Ruby で変更し、新しくインストールした Ruby を参照するように PATH を設定しようとしましたが、すべての構成に影響を与える次のエラーが発生しました。

`RubyGems' were not loaded.
`error_highlight' was not loaded.
`did_you_mean' was not loaded.
`syntax_suggest' was not loaded.

Ruby を完全なスタンドアロン モードでビルドすることが可能かどうか、また可能であればその方法について何かヒントはありますか?

解決策

これは簡単なことではありません。スタンドアロンの実行可能ファイルは通常、「静的にリンクされた」バイナリと呼ばれます。これは、そのすべての依存関係が実行可能ファイルに取り込まれ、バンドルされていることを意味します。そうすれば、実行時にライブラリを動的にロードする必要がなく、互換性のあるアーキテクチャを持つどのシステムでも常に同じように実行されます。実際のところ、これには幅があります。すべてを静的にリンクしますか?リブでも?それは、結果として得られるバイナリで何をしたいかによって異なります。

幸いなことに、誰かがすでに Ruby に対してこれを実行しているようです。 Traveling Ruby は、事前に構築されたバイナリと、Gem を含むカスタム パッケージを作成するためのツールを提供します。