最近、新しいRails 5アプリを作成しました。Gitリポジトリはありません。自動生成されたGemfileには、これまで見たことのない新しいブロックが含まれています。
git_source(:github) do |repo_name|
repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
"https://github.com/#{repo_name}.git"
end
それの意味は何ですか?すべての新しいアプリに必須ですか?
これはレガシーコードの一部であり、おそらく削除する必要があります。
追加:githubからのソースがHTTPSではなくHTTP経由でロードされる可能性のあるBundlerのバグの回避策-これにより、中間の攻撃。
git_source
は、gemがrubygems.org
からのパッケージの代わりにgitリポジトリからダウンロードされるように使用できるソースを追加します。
git_source(:github) do |repo_name|
repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
"https://github.com/#{repo_name}.git"
end
あなたが宣言するときにそうするでしょうか:
gem 'foo_bar', :github => 'foo/bar'
Bundlerは、https://github.com/foo/bar.git
からgemをダウンロードしようとします。
これを修正すると重大な変更になる なので、既存のGemfile.lockが無効になるため、Bundler 2.xで修正されています。その時点で、この回避策を削除しても安全です。
Bundler:githubディレクティブは、安全でないhttp
プロトコルを使用するgit://github.com/#{repo_name}.git
( source )からフェッチします。
これは将来のBundlerバージョンで修正される予定ですが、このスニペットはhttps
がBundler 1で使用されるようにGemfileの先頭に追加されます。
このコードをgemfileに追加したくないが、githubからgemに安全にアクセスしたい場合は、次の方法を使用できます。
gem 'foo_bar', git: 'https://github.com/foo/bar.git