我正在尝试构建一个rails项目,因为我正在处理的主机无法访问Internet上的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://作为协议,它只是指向GitHub作为gem的来源
gem 'jasmine', :github => 'pivotal/jasmine-gem'
我需要做些什么来使捆绑者使用https://而不是git://从GitHub中提取宝石?
编辑:
除了编辑GemFile中的每个受影响的行之外,还有其他方法吗?如果项目的GemFile已更新,我宁愿避免任何合并问题。
答案 0 :(得分:59)
使用bundle config github.https true
答案 1 :(得分:54)
Git使用url..insteadOf配置选项提供URL重写功能。
所以要使所有与github.com的连接都使用https://而不是git://
git config --global url."https://github.com".insteadOf git://github.com
--global
开关为当前用户设置所有git操作的配置选项,因此有时候它可能过于干扰。但它确实避免在当前项目中更改git配置。
答案 2 :(得分:36)
你可以这样做:
gem 'jasmine', git: 'https://github.com/pivotal/jasmine-gem.git'
答案 3 :(得分:14)
如果您只想在一个Gemfile中为所有宝石创建这个,您可以在文件顶部添加这些行:
this
或者,您可以使用git_source(:github) do |repo_name|
repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
"https://github.com/#{repo_name}.git"
end
。但这只会影响您当前的环境。
答案 4 :(得分:9)
如果你要部署到heroku,你可以添加BUNDLE_GITHUB__HTTPS
(注意双下划线)作为环境变量并将其设置为true
(在{{1}下的heroku应用程序的仪表板中Settings
部分中的}标签。对于所有此类请求,这会将协议从Config Vars
切换为git://
。
答案 5 :(得分:3)
您应该能够在Gemfile中放置一个完整的Git URL。例如:
gem 'jasmine', :git => 'https://github.com/pivotal/jasmine-gem.git'
答案 6 :(得分:0)
如果需要在每次安装中都进行特殊的晦涩设置的解决方案,那么您只需要一点点语法糖就不是解决方案。
这就是为什么我提议将其作为答案:
只需使用:https
并通过捆绑程序报告一个安全漏洞,即未加密的协议是默认协议。