Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 有rubygems.org的官方镜像吗?_Ruby On Rails_Ruby_Bundler - Fatal编程技术网

Ruby on rails 有rubygems.org的官方镜像吗?

Ruby on rails 有rubygems.org的官方镜像吗?,ruby-on-rails,ruby,bundler,Ruby On Rails,Ruby,Bundler,由于连接到rubygems.org的错误,我最近在部署应用程序时遇到了麻烦,例如: Fetching gem metadata from http://rubygems.org/ Error Bundler::HTTPError during request to dependency API Fetching full source index from http://rubygems.org/ Unfortunately, a fatal error has occurred. Please

由于连接到rubygems.org的错误,我最近在部署应用程序时遇到了麻烦,例如:

Fetching gem metadata from http://rubygems.org/
Error Bundler::HTTPError during request to dependency API
Fetching full source index from http://rubygems.org/
Unfortunately, a fatal error has occurred. Please see the Bundler
troubleshooting documentation at http://bit.ly/bundler-issues. Thanks!                                                                        

~/.rvm/rubies/ruby-1.9.3-p374/lib/ruby/1.9.1/net/http.rb:762:in `initialize'
Connection timed out - connect(2)
Errno::ETIMEDOUT
gems系统很棒,但我认为它是一个单一的故障点,当它不可用时,你无法获得最新的补丁等。Debian存储库有一个庞大的网络,镜像可以根据地理位置进行选择。宝石也有类似的东西吗?如果有镜子,我如何确保那里的软件包没有被破坏?(最近rubygems.org上也发生了这种情况)


另一件事,当我有一个gems的本地副本时,bundler可以不从rubygems.org获取而直接将它们传输到服务器吗?它可能会减少服务器的负载,而且可以确保您的部署在任何时候都能正常工作(我知道,我可以将gems检查到我的git存储库中,但我不喜欢这样做)。

可能有Rubygems.org的镜像,但我没有尝试过,也不知道它们是否拥有所有gems。 但是在您的
Gemfile
中有一个名为
source
的声明,您可以告诉Bundler在另一面镜子上查看

然而,有一个gem可以将所有gem镜像到本地系统,名为

您可以通过Bundler
:path
命令在本地将某些gems安装到git中。 所以,如果你想有一个本地副本,让我们说,设计你可以做

gem 'devise', :path => 'vendor/devise'
然后在
供应商/designe
文件夹中克隆designe存储库,并将其提交给Git


但是如果你试着对所有的gem都这么做的话,会很快变得很无聊,因为Rails本身只涉及到几十个gem。您可以查看RVM Gemsets,bundler有一种方法可以获取所有gems并将它们与您的应用程序捆绑在一起(很抱歉,您需要咨询文档以了解更多信息,因为我还不需要这些信息)

如果gem在那里可用,您也可以使用github。不过Rubyforge很受欢迎。据我所知,您的gemfile必须正确声明,如果您只安装了ruby和/或rails,请查看是否与gem/s存在版本冲突。

此gem可能会解决此问题。用法非常简单:

config/deploy.rb:

require 'capistrano-strategy-copy-bundled'
set :deploy_via,    :copy_bundled 

您的所有gem都打包到本地tar归档中,然后再传输到服务器。但是,有一个问题,如果您想使用本机扩展(如数据库驱动程序、therubyracer等)部署GEM,则需要在两台机器上具有相同的体系结构和版本的依赖库(如glibc)。

它可能是缓存镜像,只需保存最近使用的gems的副本,并将其他请求转发到rubygems.org。我不喜欢只依赖一个来源,大多数服务器可能位于美国,如果在欧洲有一些东西就好了。是的,我不想将gems签出到git存储库,我更喜欢将本地的所有gems打包到一个归档,然后发送到服务器。使用JRuby可以做到这一点(您只创建了一个
war
文件)。这个问题可能会帮助您做到这一点:看起来很彻底。然后我会依赖github的可用性,它解决不了任何问题。当然,我在github上有一些最新版本的gems,但大多数都是rubygems.org上的。几个月前,我在安装databasedotcom salseforce gem时遇到了一个问题,ruby forge和github都提供了gem,它们都不起作用,然后我不得不处理gem文件,它遇到了所有问题。