在Ubuntu上使用Phusion Passenger部署Rails 3并包含所有GEMS

时间:2013-10-20 19:43:35

标签: ruby-on-rails-3 ubuntu gem bundler passenger

我需要将Rails 3 / Phusion Passenger / Apache2应用程序部署到Ubuntu 12.04服务器,而无需在服务器上安装任何gem。

我可以安装任何Debian软件包。

如何包含所有需要的宝石(包括Rails,从github上的git项目安装的几个宝石,以及从rubygems.org安装的一堆常规宝石)我的项目中,这样,部署之后,Passenger会找到Rails和所有的宝石并且很开心吗?

(我知道很多人可能会好奇我为什么要这样做。不幸的是,我不能谈论这个。很抱歉。抱歉。)

以下是一些没有效果的事情。如果稍微修改一下,其中一个可能会起作用,我不知道:

方法1失败:

  1. 在Ubuntu 12.04开发机上。 Ruby 1.9.3。 Bundler 1.3.5。捆绑包 - 所有。 Git commit。
  2. 在Ubuntu 12.04服务器机器上(无法从Internet安装gem)。部署项目文件并安装软件包(apache2,ruby1.9.3,ruby-bundler,rubygems,libapache2-mod-passenger,它带来了ruby1.8)。 bundle -v给出Bundler版本1.0.15(来自ruby-bundler包)。确保还部署了dev机器的.bundle / config文件。 bundle install --local尝试从github下载git gems,所以失败。

3 个答案:

答案 0 :(得分:1)

尝试使用bundle package --all,这应该将您的宝石保存到./vendor/cache。您还可以使用gem unpack --target vendor在本地环境中解压缩宝石,以将它们保存在供应商目录中。然后你可以在Gemfile中给出一个位置,以便你的应用程序可以找到宝石。您是否可以不使用网络安装宝石,或者您是否真的不允许以任何方式安装宝石?

<强>来源: 12

答案 1 :(得分:0)

尝试使用pkgr工具,它可以将您的Rails应用和所有依赖项转换为单个可安装的Debian软件包。

答案 2 :(得分:0)

update-alternatives --install / usr / bin / ruby​​ ruby​​ /usr/bin/ruby1.9.3 200 update-alternatives --install / usr / bin / gem gem /usr/bin/gem1.9.3 200

(Phusion Passenger并不关心这一点,但对于我们即将安装的Gems以及使用Rails控制台或未来的任何东西进行调试可能是一个好主意。)

  • gem install --local vendor / bundler-1.3.5.gem

  • 捆绑安装--local

  • 设置所有其他Apache配置...

  • service apache2 restart