2012-07-02 30 views
13

我有一台与Internet完全断开连接的服务器(出于一些奇怪的安全原因)。离线服务器上的Ruby gem依赖关系

如何使Ruby依赖项在该环境中的各种gem工作?它可能与Bundler一起使用,但是如何在没有Internet连接的情况下使用宝石安装Bundler?

+4

您可以从'.gem'文件安装捆绑器。转到[rubygems](http://rubygems.org/gems/bundler/),点击'下载'按钮,然后执行'gem install bundler-1.1.4.gem'。然后,您可以使用['bundler package'](http://gembundler.com/man/bundle-package.1.html)将所有必需的宝石打包到应用的'vendor/cache'目录中,以便您可以部署它们随着应用程序到您的服务器。 –

+0

谢谢!我会马上试试。 Ruby会自动找到vendor/cache中的所有gem,还是需要指定一个特定的加载路径? –

+1

根据[docs](http://gembundler.com/man/bundle-package.1.html),如果您在服务器捆绑程序的应用程序目录中进行捆绑安装--local',则只会查找宝石'供应商/ cache'。 –

回答

21

您可以下载捆绑从RubyGems的一个.gem文件,并

gem install /path/to/bundler.gem 

在服务器上安装它,那么你可以收拾你的应用程序所需的所有宝石到./vendor/cache目录与

bundle package 

如果现在您将您的应用程序(连同./vendor/cache目录)部署到服务器并运行

bundle install --local 

bundler不会去rubygems,而是会从./vendor/cache目录安装所有宝石。

请参阅bundler-packagedocs了解更多信息。

+0

第一步是gem fetch bundler –