1

我正在部署一个 Rails 应用程序,这就是我目前所做的:

构建应用程序步骤:

  1. 通过 git 哈希标签进行 git 同步
  2. 将 gem 捆绑到应用程序自身目录(供应商/捆绑包)中。
  3. 预编译资产。
  4. 将应用程序构建到一个 debian 包 (.deb) 中。
  5. 在目标机器上,我只是 dpkg -i myapplication.deb 来安装它。那是。

现在问题是第 2 步。

在我执行bundle package --allbundle install --deployment之后,并不是所有的 gem 都捆绑到 vendor/bundle/ruby/1.9.1/gems/ 中,它们是来自 git 路径的 gem,而不是来自默认的 ruby​​gems.org。

➜ luna-server git:(v0.1.0) ✗ bundle show rails
/Users/qichunren/code/work/luna-server/vendor/bundle/ruby/1.9.1/gems/rails-3.2.11
➜ luna-server git:(v0.1.0) ✗ bundle show luna-channel
/Users/qichunren/code/work/luna-server/vendor/cache/luna-channel-31bb309440e5

所以当我在目标机器上运行我构建的rails应用程序时,它显示一些未安装的gem(例如:luna-channel),请捆绑安装,因为它不在/vendor/bundle/ruby/1.9.1/gems/

有没有办法将包缓存中的所有 gem 放入目标包目录?

请帮我。谢谢。

4

2 回答 2

0

我解决了我的问题,代码在这里:https ://github.com/qichunren/bundler/commit/192c822724f356f2573cabd4fd4ddc1a217b7d8b

如果此更改适用于整个项目,我不知道,但此更改解决了我的问题。

于 2013-03-27T01:10:38.660 回答
0

链接到文档有一个--path选项bundle install

这告诉 bundler 安装所有 gem 的确切路径。

不过,您的开发风格是非典型的,因此我强烈建议您彻底阅读捆绑器文档并非常确定要做什么bundle packagebundle install --deployment做什么。

http://gembundler.com/v1.3/deploying.html
http://gembundler.com/v1.3/bundle_package.html

有时很难看出他们在谈论开发机器还是生产机器。

于 2013-03-26T10:45:15.250 回答