10

私自身の宝石には、Gemfile基本的に次のような があります。

source 'https://my.gemserver.com'
source 'https://rubygems.org'

gemspec

My.gemspecにはすべての依存関係が および としてリストされadd_dependencyていadd_development_dependencyます。

Bundler 1.8 の時点で、次の警告が表示されます。

Warning: this Gemfile contains multiple primary sources. Using `source` more than
once without a block is a security risk, and may result in installing unexpected gems.
To resolve this warning, use a block to indicate which gems should come from the
secondary source. To upgrade this warning to an error,
run `bundle config disable_multisource true`.

この警告を解決する方法はありますか (バンドル構成を介してミュートせずに)? Rubygems 仕様のソース オプションについては何も見つかりません。

4

3 に答える 3

6

ちょっと悲しいですが、Gemfileに移動する必要があります:-(

Gemfile:

source 'https://my.gemserver.com' do
  your_gem1
  your_gem2
  #...
end

source 'https://rubygems.org'

gemspec

ただし、宝石の一部をグループに含める必要がある場合は:development:test次を使用できます

Gemfile:

your_gem1, :source => 'https://my.gemserver.com'
#...
group :development do
  your_gem2, :source => 'https://my.gemserver.com'
  #...
end

source 'https://rubygems.org'

gemspec
于 2016-02-10T11:32:32.453 に答える
2

この問題に関する議論を詳しく説明するにbundler、以前の回答で述べたように、gem を含める必要Gemfileがあります。ただし、.xml で gem のバージョンを指定するだけで済みます.gemspec。プライベートな依存関係よりも頻繁にバージョンを変更する場合、これはひどい解決策ではありません。

でバージョンなしで gem を参照しGemfileます。

# Gemfile
source 'https://rubygems.org'

source 'https://xxx@gem.fury.io/me/' do
  gem 'my-private-dependency'
end

gemspec

のバージョン指定で gem を参照し.gemspecます。

# my-gem.gemspec
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)

Gem::Specification.new do |spec|
  spec.add_dependency 'my-private-dependency', '~> 0.1.5'
end
于 2017-04-25T16:23:18.810 に答える