强制捆绑安装使用https://而不是git://用于基于GitHub的gems

时间:2014-01-21 14:19:37

标签: ruby github bundler

我正在尝试构建一个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已更新,我宁愿避免任何合并问题。

7 个答案:

答案 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 。但这只会影响您当前的环境。

This won't be necessary anymore with Bundler 2.0.

答案 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并通过捆绑程序报告一个安全漏洞,即未加密的协议是默认协议。