Bundler命令bundle install --deployment不捆绑所有gem

时间:2013-03-26 09:59:48

标签: ruby-on-rails ruby bundler

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

构建应用程序步骤:

  1. git hash标签git sync
  2. 将gems捆绑到应用程序自我目录(供应商/捆绑包)。
  3. 预编译资产。
  4. 将应用程序构建到debian软件包(.deb)。
  5. 在目标计算机上,我只需要dpkg -i myapplication.deb来安装它。这是
  6. 现在问题是第2步。

    执行捆绑软件包--all 捆绑软件安装 - 部署后,并非所有宝石都捆绑到vendor / bundle / ruby​​ / 1.9.1 / gems /中,这是来自git路径的宝石,而不是默认的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/

    有没有办法让捆绑缓存中的所有宝石进入目标捆绑目录?

    请帮帮我。感谢。

2 个答案:

答案 0 :(得分:0)

--path link to docs

上有bundle install个选项

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

您的开发风格虽然不典型,但我强烈建议您仔细阅读Bundler文档,并确保bundle packagebundle install --deployment做什么。

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

有时很难看出他们何时谈论开发机器或生产机器。

答案 1 :(得分:0)

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

如果此更改适用于整个项目,我不会这样做,但这个更改解决了我的问题。