サーバーにログインし、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 が実行しようとすると失敗するのはなぜかということです。これは調査する価値があり、簡単な修正があることを願っています。