プラグインで `eth` gem のインストールに苦労しています

サーバーにログインし、Dockerコンテナに入りました。

  • gems という名前のフォルダを作成します。

  • サブディレクトリ 2.7.5 を作成します(tests-passed の本番環境 Discourse が使用する Ruby バージョン)。

  • gems フォルダに戻ります。

  • 次のような形式でコマンドを実行します。

    RUBY_VERSION=2.7.5
    gem install pkg-config -v 1.4.7 -i $RUBY_VERSION --no-document --ignore-dependencies --no-user-install
    gem install mkmfmf -v 0.4 -i $RUBY_VERSION --no-document --ignore-dependencies --no-user-install
    ...
    

    注:これらは、Discourse が gem をインストールするために(実行しようとして失敗する)実行するのと同じコマンドです。

  • 次に、このフォルダを zip 圧縮します。

  • Docker コンテナを終了し、docker cp コマンドを使用して zip ファイルを Docker コンテナの外にコピーします。

  • FileZilla または VSCode でサーバーに接続し、zip ファイルをダウンロードします。

  • プラグインのルートフォルダに解凍します。これにより、プラグインフォルダに gems ディレクトリができます。

  • 次に、gems フォルダをプラグインと共に GitHub にプッシュします。

これで、このプラグインで Discourse を再構築すると、Discourse は提供された依存関係を使用し、それらをインストールしようとしなくなります。これは一時的な回避策であり、Discourse が Ruby バージョンを更新した際には再実行する必要があります。

しかし、大きな疑問は、ターミナルから実行すると機能する同じコマンドが、Discourse が実行しようとすると失敗するのはなぜかということです。これは調査する価値があり、簡単な修正があることを願っています。

「いいね!」 3