1

我正在将 Rails 应用程序部署到服务器。有一些环境限制,即:

  1. 服务器上无法访问互联网
  2. 服务器上没有root访问权限
  3. 没有构建工具(GCC 等)

我几乎让 capistrano 部署工作,但是当捆绑器尝试安装 json gem 时失败:

** [out :: 192.168.7.115] Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
** [out :: 192.168.7.115] 
** [out :: 192.168.7.115] /app/ruby/bin/ruby extconf.rb
** [out :: 192.168.7.115] creating Makefile
** [out :: 192.168.7.115] 
** [out :: 192.168.7.115] make
** [out :: 192.168.7.115] compiling generator.c
** [out :: 192.168.7.115] make: gcc: Command not found
** [out :: 192.168.7.115] make: *** [generator.o] Error 127 

由于没有互联网,我将所有的宝石都存储在vendor/cache. 我想通过在具有 gcc 的类似机器上编译 json gem 来解决这个问题但我无法在系统上找到“编译后的”gem。通常,我会看到一个[gemname]-x86_64-linux.gemgemfile,表明编译已经完成。似乎无法为 JSON gem 找到这个,但如果我找到了,我猜我可以把它放在我的vendor/cache文件夹中并收工。

有什么建议么?我是否正确地解决了这个问题?

4

1 回答 1

0

我不能推荐这种方法,因为它在很多层面上都可能是一件坏事,但它确实解决了我的问题。我最终将shared/bundle文件夹从登台服务器复制到生产服务器。Bundler 发现 gems 已经安装并且不会尝试重新安装它们。

于 2013-05-31T22:02:07.503 回答