由于连接到 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 存储库网络庞大,可以根据地理位置选择镜像. gem 有类似的东西吗?如果有镜像,我怎么能确定那里的包没有受到损害? (最近也发生在 rubygems.org 上)
另一件事,当我有一个 gems 的本地副本时, bundler 可以将它们直接传输到服务器而无需从 rubygems.org 获取吗?它可能会减少服务器的负载,而且确保您的部署可以随时运行(我知道,我可以将 gems 检查到我的 git 存储库中,但我不喜欢这样做)。
最佳答案
可能有 Rubygems.org 的镜像,但我没试过,不知道他们是否有所有的 gems。
但是在您的 Gemfile
中有一个名为 source
的声明,您可以在其中告诉 Bundler 查看不同的镜像。
但是有一个 gem 可以将所有 gem 镜像到您的本地系统,称为 rubygems-mirror
您可以通过 Bundler :path
命令在本地将某些 gem 安装到您的 git 中。
所以如果你想拥有一个本地副本让我们说设计你可以做
gem 'devise', :path => 'vendor/devise'
然后您将设计存储库克隆到您的 vendor/devise
文件夹中并将其提交给 Git。
如果您尝试对所有 Gems 执行此操作,它会很快变得非常无聊,因为有许多 Gems 仅涉及 Rails 本身。您可以为此查看 RVM Gemsets,并且 bundler 有一种方法可以获取所有 gem 并将它们与您的应用程序 bundle 在一起(抱歉,您必须查阅文档以获取更多信息,因为我还不需要它)
关于ruby-on-rails - rubygems.org 的任何官方镜像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14873083/