web-dev-qa-db-ja.com

Railsプロジェクトの宝石をフォークする

この状況で2回気づきました。システムにgemをインストールし、Railsプロジェクトから使用を開始します。最終的には、そのgemにいくつかの変更を加える必要があります。どのように進めればよいですか? ?

理想的には、〜/ third_party/gemsなどのどこかでそのgemのソースコードをチェックして、それに取り組んで、代わりに私のRailsプロジェクトにそれを使用させたいです。それは可能ですか?

すべての場合において、宝石はgithubにあったので、おそらくgithubでそれを作成し、クローンを作成し、チャンスを作って、自分のブランチを維持します。次に、サーバーにgem installを使用して、そのブランチを直接インストールすると思います。それは理にかなっていますか?

58
pupeno

今日、これはBundlerで非常に簡単に行えます。宝石のローカルコピーを作成してから、

gem "whatever"

gemfileでは、次のことを行います。

gem "whatever", :path => "/home/pupeno/whatever"

バンドルインストールを実行した後、gemはそのディレクトリから選択されます。そこで何かを変更したとしても、それを再ロードするために必要なのはRailsを再起動することだけです。

Gemの独自の変更を使用してアプリケーションをデプロイする必要がある場合は、GithubなどとGemfileでフォークを作成します。

gem "whatever", :git => "[email protected]:/pupeno/whatever.git"

以上です。シンプルでわかりやすく、美しいです。

100
pupeno

すべての場合において、宝石はgithubにあったので、おそらくgithubでそれを作成し、クローンを作成し、チャンスを作って、自分のブランチを維持します。次に、サーバーにgem installを使用して、そのブランチを直接インストールすると思います。

あなたが本当に実際の宝石のソースをハックする必要があるなら、そうです、それはそれをする方法でしょう。しかし、それは最後の手段であるべきです。必要がなければ、実際の宝石を維持したくありません。 Railsコードのgemクラスの代わりに、機能を変更してクラスを使用する必要があるgemソースからクラスを拡張してみませんか?

必要なことを行うために、実際にサードパーティのコードを直接ハッキングする必要があることはめったにありません。優れたソフトウェアは拡張/簡単に拡張できます。

4
Chris