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が更新された場合、今後のマージの問題を回避したいと思います。
Gitは、url..insteadOf構成オプションを使用してURL書き換え機能を提供します。
したがって、github.comへのすべての接続を行うには、git://ではなくhttps://を使用します
git config --global url."https://github.com".insteadOf git://github.com
--global
スイッチは、現在のユーザーによるすべてのgit操作の構成オプションを設定するため、煩わしすぎる場合があります。ただし、現在のプロジェクトのgit設定を変更することは避けます。
使用する bundle config github.https true
できるよ:
gem 'jasmine', git: 'https://github.com/pivotal/jasmine-gem.git'
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
を使用できます。ただし、これは現在の環境にのみ影響します。
herokuにデプロイする場合は、BUNDLE_GITHUB__HTTPS
(二重アンダースコアに注意)を環境変数として追加し、true
に設定できます(Config Vars
セクションのSettings
タブの下にあるherokuアプリのダッシュボードで) )。これにより、そのようなすべての要求に対してプロトコルがgit://
からhttps://
に切り替えられます。
完全なGit URLをGemfileに配置できるはずです。例えば:
gem 'jasmine', :git => 'https://github.com/pivotal/jasmine-gem.git'
ほんのわずかなシンタックスシュガーのために作成するすべてのインストールで特別なあいまいな設定を実行する必要があるソリューションがソリューションではない場合。
それが私がこれを答えとして提案している理由です:
単に:https
&暗号化されていないプロトコルがデフォルトであるというバンドラーのセキュリティバグを報告します。