4

名前のない外部の宝石に依存するプロジェクトの宝石を構築しようとしています:)

開発中に、外部プロジェクトに小さなバグが見つかり、それを解決するための 1 行の修正を追加しました。github でプル リクエストを送信しましたが、メンテナからしばらく応答がありません。

自分のプロジェクトを gem として利用できるようにしたいのですが、この修正がないと機能しません。私に何ができる?これを修正する最善の方法は何でしょうか。

私が考えた 1 つのオプションは、フォークされたプロジェクトの宝石を作成し、複雑な名前で公開し、それに依存することでした。しかし、私はそのようなばかげた宝石でサーバーを汚染するという考えは好きではありません.

そのため、外部の宝石をアプリケーションにバンドルして、宝石と一緒にインストールできるかどうか疑問に思っていました。これを行うための最もクリーンで簡単な方法は何でしょうか?

4

3 に答える 3

2

独自のコードで関数をオーバーライドすることを検討しましたか? 私は数週間前にいくつかのソフトウェアで同様の問題を抱えていたので、機能を再定義しました。

あなたが見つけたのは1行だけだったので、これが最も簡単な解決策のように思えますが、私はRubyに少し慣れていないので、この計画には私が考えていなかった問題があるかもしれません.

于 2012-06-15T19:05:05.077 に答える
0

実際、それは非常に簡単です。Gemfile で依存関係を次のように追加します。

gem "nokogiri", :git => "git://github.com/tenderlove/nokogiri.git"

これを行うには、バンドラーを使用して gem を管理する必要もあります。詳細については、こちらを参照してください。

もう 1 つのオプションは、変更したコードを gem のベンダー ディレクトリに追加し、それをコードと共に配布することです。この方法では、この他の gem のメイン ディレクトリをロード パスに追加するだけで、必要に応じてそれを必要とすることができます。問題。

ロード パスに何かを追加するには、次のようにします。

$LOAD_PATH.unshift( File.join(File.dirname(__FILE__), '..', 'vendor', 'some_gem', 'lib') )

また、でファイルを直接要求できるようになりますsome_gem

于 2012-06-15T11:49:55.730 に答える