13

プロジェクトで使用されているローカルで作業している宝石があります。

を使用して gem の場所を指定するpathと、変更を加えることができ、プロジェクトは新しいコードを取得します。

gem 'example', :path => "~/path/to/gems/example"

しかし、Heroku にプッシュすると、Heroku がローカル マシンの gem ソースにアクセスできないため、バンドルが失敗します。

そのため、gem ソースをリモート リポジトリにプッシュして、gem ソースをそこに向けることができます。

gem 'example', :github => 'example/example', :branch => 'example_feature'

ただし、変更をこのレポにプッシュしてから、gem を更新してプロジェクトの新しい変更を取得する必要があります。

$ cd ~/path/to/gems/example
$ git c -a -m "Update gem"
$ git push origin example_feature
$ cd ~/path/to/projects/project
$ gem update example

ローカル リポジトリにローカル オーバーライドを設定することで、この問題を少し軽減できます。

$ bundle config local.example ~/path/to/gems/example

しかし、プロジェクトに新しい変更が必要な場合は、変更したファイルを git に追加してコミットし、$ gem update examplegem ソースを変更するたびに追加する必要があります。

プロジェクトでローカルの変更を自動的に取得する方法はありますか (使用する場合と同様path)、本番環境ではリモート リポジトリを引き続き使用しますか?

4

3 に答える 3

1

@bbozo が述べたように、gemfile で git リポジトリを使用すると、Gemfile.lock にリビジョン ハッシュを保存する開発用のバンドル ローカル オーバーライドを使用できます。本番環境では、これらの正確なリビジョン ハッシュは bundle install の実行時にチェックアウトされます。

Gemfile: gem 'example', git: 'https://github.com/your_name/example.git', branch: :master

バンドル構成シェル コマンド: bundle config local.example /path/to/local/git/repository

Gemfile.lock (自動生成): GIT remote: https://github.com/your_name/example.git revision: b9270e61abb89e1ff77fb8cfacb463e4d04388ad branch: master

「サンプル」git リポジトリでコミットした後、メイン アプリケーションで bundle install を実行して、Gemfile.lock を再構築して新しいリビジョン ハッシュを含める必要があることに注意してください。このプロセスを自動化し、他のシナリオにも役立つため、以下の gem を使用することをお勧めします。正確な詳細については、gem ページを参照してください。

https://github.com/EPI-USE-Labs/git-bundle

于 2016-07-01T16:17:43.817 に答える