为什么使用“ bundle --deployment”而不是“ bundle --without”?

时间:2019-03-06 15:37:55

标签: ruby rubygems bundler rhel7 rhel6

背景:不是问题

我有一个在chruby环境中同时在开发和生产中运行的项目,其中ruby-install是作为root安装的,ruby被存储在/ opt / rubies中。我真的很难(像很多人一样)使nokogiri作为捆绑包的一部分来编译其本机扩展,但是只要没有binstub,它就可以像项目目录之外的任何chruby用户一样进行编译。 这只是背景情况;我的问题不是真的。

我当前的黑客

我发现当我将binstub提交给我的项目时,会发生各种不良情况。到目前为止,我最好的解决方案似乎是:

# skip any bundled/binstub version of bundler
rm -rf ./bin
`which bundle` install --binstubs --without="development test"

这似乎很好。 Nokogiri显然不是生产依赖性(是的!),。/ bin目录被精简为生产所需的宝石。

问题:捆绑器部署标志是否可以解决任何问题?

因此,这是一个问题:我在这里所做的与有无垃圾桶的bundle install --deploy有什么区别?我知道默认情况下它指向 vendor / bundle 而不是 bin ,但是the docs并没有真正解释这种方法的优缺点(至少没有以我了解的方式)。

除了对自身有价值的知识外,我真的很想以某种方式在生产宝石中销售产品,即它可以跨系统工作(例如RHEL6和RHEL7),而无需重建本机扩展或剥离在生产机器上开发/测试宝石。

部署标志是答案吗?还是有更好的方法来为跨发行版项目提供具有本机扩展的gems?

0 个答案:

没有答案