我正在部署一个 Rails 应用程序,这就是我目前所做的:
构建应用程序步骤:
- 通过 git 哈希标签进行 git 同步
- 将 gem 捆绑到应用程序自身目录(供应商/捆绑包)中。
- 预编译资产。
- 将应用程序构建到一个 debian 包 (.deb) 中。
- 在目标机器上,我只是 dpkg -i myapplication.deb 来安装它。那是。
现在问题是第 2 步。
在我执行bundle package --all和bundle install --deployment之后,并不是所有的 gem 都捆绑到 vendor/bundle/ruby/1.9.1/gems/ 中,它们是来自 git 路径的 gem,而不是来自默认的 rubygems.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 放入目标包目录?
请帮我。谢谢。