ruby - 为什么使用“bundle --deployment”而不是“bundle --without”?
问题描述
背景:不是问题
我有一个在 chruby 环境中同时在开发和生产中运行的项目,其中 ruby-install 以 root 身份安装,rubies 存储在 /opt/rubies 中。我很难(和很多人一样)让 nokogiri 将其本机扩展编译为捆绑包的一部分,但只要没有 binstub,它就可以像项目目录之外的任何 chruby 用户一样编译。这只是背景背景;这不是我的问题。
我目前的黑客
我发现当我将 binstubs 提交到我的项目时,会发生各种不良情况。到目前为止,我最好的解决方案似乎是:
# skip any bundled/binstub version of bundler
rm -rf ./bin
`which bundle` install --binstubs --without="development test"
这似乎工作得很好。Nokogiri 显然不是生产依赖项(耶!),并且 ./bin 目录被精简为生产所需的 gem。
问题:Bundler 部署标志会解决任何问题吗?
所以,问题来了:我在这里所做的,bundle install --deploy
有或没有 binstubs 有什么区别?我知道它默认指向供应商/捆绑包而不是bin,但是文档并没有真正解释这种方法的优缺点(至少不是以我理解的方式)。
除了本身就很有价值的知识之外,我真的很想以一种可能跨系统(例如 RHEL6 和 RHEL7)工作的方式提供生产 gem,而无需重建本机扩展或剥离开发/测试生产机器上的宝石。
部署标志是答案吗?或者有没有更好的方法来为跨发行版项目提供带有本机扩展的 gem?
解决方案
推荐阅读
- visual-studio - 如何恢复 Visual Studio 用户设置(在可能的意外同步之后)
- python - 从 tensorflow 对象检测 API 返回 Json 或漂亮的东西
- maven - Maven:liquibase - firebird:原因:liquibase.exception.DatabaseException:GDS 异常。335544569. 动态 SQL 错误
- oracle - ORA-00955: 名称已被 pl/sql 中的现有对象使用
- python - 如何从模型中可用的多个选项中为 django 中的该键添加外键?
- java - 为什么 Apache Ignite sys-thread 消耗这么多内存?
- imageresizer - ImageResizer 与 Azure 文件
- sas - 使用数据线输入日期导致无效数据
- php - php shell 命令中的 rm -f 安全吗?
- c++ - 如何替换字符串中的 QRegExp?