web-dev-qa-db-ja.com

GitHubベースのgemに対して、git://の代わりにhttps://を使用するようにバンドルインストールを強制する

Railsプロジェクトを作成しようとしていますが、作業中のホストがgit://プロトコル(ポート9418)のインターネットにアクセスできないため、次のようなエラーが発生します。

Fetching git://github.com/pivotal/jasmine.git
fatal: unable to connect to github.com:
github.com[0: 192.30.252.130]: errno=Connection refused

実行中bundle install

GemFileの関連する行では、プロトコルとしてgit://を指定していません。gemのソースとしてGitHubを指しているだけです

gem 'jasmine', :github => 'pivotal/jasmine-gem'

GitHubからgemをプルするためにgit://ではなくhttps://を使用するようにバンドラーを作成するにはどうすればよいですか?

編集:

GemFileで影響を受けるすべての行を編集する以外の方法はありますか?プロジェクトのGemFileが更新された場合、今後のマージの問題を回避したいと思います。

47
Bell

Gitは、url..insteadOf構成オプションを使用してURL書き換え機能を提供します。

したがって、github.comへのすべての接続を行うには、git://ではなくhttps://を使用します

git config --global url."https://github.com".insteadOf git://github.com

--globalスイッチは、現在のユーザーによるすべてのgit操作の構成オプションを設定するため、煩わしすぎる場合があります。ただし、現在のプロジェクトのgit設定を変更することは避けます。

54
Bell

使用する bundle config github.https true

60
Sam Kah Chiin

できるよ:

gem 'jasmine', git: 'https://github.com/pivotal/jasmine-gem.git'
37
Agis

1つのGemfile内のすべてのgemに対してのみこれが必要な場合は、ファイルの先頭に次の行を追加できます。

git_source(:github) do |repo_name|
  repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
  "https://github.com/#{repo_name}.git"
end

または、bundle config github.https trueを使用できます。ただし、これは現在の環境にのみ影響します。

これはBundler 2.0ではもう必要ありません。

14
matthias

herokuにデプロイする場合は、BUNDLE_GITHUB__HTTPS(二重アンダースコアに注意)を環境変数として追加し、trueに設定できます(Config VarsセクションのSettingsタブの下にあるherokuアプリのダッシュボードで) )。これにより、そのようなすべての要求に対してプロトコルがgit://からhttps://に切り替えられます。

9
clairity

完全なGit URLをGemfileに配置できるはずです。例えば:

gem 'jasmine', :git => 'https://github.com/pivotal/jasmine-gem.git' 
3
James Frost

ほんのわずかなシンタックスシュガーのために作成するすべてのインストールで特別なあいまいな設定を実行する必要があるソリューションがソリューションではない場合。

それが私がこれを答えとして提案している理由です:

単に:https&暗号化されていないプロトコルがデフォルトであるというバンドラーのセキュリティバグを報告します。

0
bbozo