4

だから私は Gemfile で次のようなことができることを知っています:

group :development, :test do
  gem 'gem1'
  gem 'gem2'
end

私が達成しようとしているのは、次のようなものです。

group :production do
  gem 'gem1'
  gem 'gem2'
end

group :development, :test do
  gem 'gem1', :path => '/Documents/Code/gem1/'
  gem 'gem2', :path => '/Documents/Code/gem2/'
end

したがって、私たちのアプリケーションは、ローカルで開発した 2 つの gem を使用します。ローカル マシンでの開発時間を短縮するために、開発環境が gem のローカル コピーを参照できるようにしたいと考えています。これにより、Rails サーバーを再起動する必要なく、すべての変更が取得されます。そうしないと、gem を再構築し、gem を再インストールし、gem の開発上の変更ごとにレールを再起動する必要があります。

ただし、これを行うと、次のエラーが発生します。

You cannot specify the same gem twice coming from different sources. You specified that gem1 (>= 0) should come from an unspecfied source and source at /Documents/Code/gem1

のようなものを実行しようとしてもbundle install --without production、同じエラーが発生します。

私がやりたいことをすることが可能かどうか誰かが知っていますか?

ありがとう!

4

3 に答える 3

6

サポートされている方法と、それを回避するためのハックがあると思います。

サポートされている方法:

ここで説明されているように、オプションで使用bundle configします: http://bundler.io/v1.3/man/bundle-config.1.htmllocal

ハッキーな方法:

環境変数を使用し、本番環境で使用する前にバンドラーを実行します: http://www.cowboycoded.com/2010/08/10/using-2-sources-for-a-gem-in-different-environments-with-bundler/

いくつかの関連する問題と多くのコメントとともに、github でこの問題に対する機能要求があります: https://github.com/carlhuda/bundler/issues/396

于 2012-10-09T19:41:23.707 に答える
5

リンク先の github issue phoet は解決され、サポートされている方法と一致しています。

私はドキュメントを掘り下げました。構成変数を設定し、ブランチを参照するように gemfile を更新する必要があります。

例えば

Gemfile を編集します。

gem <gem_name>, git: <git_url>, branch: <branch>

コマンドラインで:

bundle config local.<gem_name> <local_path_to_gem>
于 2014-03-04T14:22:34.293 に答える
0

ターゲットgemのソースを除いて元のものと同じ新しいGemfileを作成することでこれを解決しました。次に、config/boot.rb で以下を使用しました。

require 'rails' if Rails.env.development? ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../DevGemfile', __FILE__) else ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../ProdGemfile', __FILE__) end

于 2015-01-29T23:38:01.307 に答える