在后续捆绑安装中跳过本机扩展重新编译

石蕊属

由于安装nokogiri gem(1.6.0)需要花费时间,因此我的生产部署需要花费几分钟。我了解这是因为安装gem会触发本机扩展编译。

请注意,我已经打包了捆绑包并将其签入DVCS

bundle package

如果没有其他更改,是否可以避免重新编译本机扩展,从而使部署更快?

更新:

我使用Opscode Chef进行部署(具体来说是chef-solo)

环境是:Ubuntu 12.04LTS 64bit Ruby 193-p448

石蕊属

我找到了一种方法。这里是解释:

Bundler默认情况下会将gems安装到环境变量指向的文件夹中BUNDLE_PATH默认值BUNDLE_PATHvendor/bundle因此,所有gems都安装在/vendor/bundle文件夹中,该文件夹恰好是一个专用文件夹(对于Rails应用程序的每个版本)。安装新版本的Rails应用程序时,该版本vendor/bundle不存在。因此,Bundler会安装/预编译每个gem。vendor/cache与从中下载宝石相比,它可以节省很多宝石rubygems.org,但仍然无法避免编译本机扩展。

我们可以通过传递--path /shared/pathbundle install命令行来覆盖它这将确保gem始终安装在中/shared/path,所有版本(Rails应用程序的版本)都可以访问。

使用这种方法,捆绑程序将不会尝试重新安装/重新编译gem,因为它会找到已安装的gem。

所以,这是对我有用的魔术命令

bundle install --local --deployment --path /shared/bundle --without development test

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在随后的捆绑软件安装中跳过本机扩展重新编译

来自分类Dev

捆绑安装本机扩展错误?

来自分类Dev

PHP GD捆绑扩展,无需重新编译PHP-解决方案

来自分类Dev

如何在Julia中重新安装或重新编译已安装的软件包?

来自分类Dev

在后续运行中,如何使CMake跳过ExternalProject?

来自分类Dev

For循环在后续迭代中跳过变量声明

来自分类Dev

为什么在安装lib devels之后重新编译python?

来自分类Dev

无法安装使用apktool重新编译的应用程序?

来自分类Dev

使用堆栈安装zlib:使用-fPIC重新编译

来自分类Dev

重新编译多次

来自分类Dev

重新编译多次

来自分类Dev

React Webpack捆绑器不会在文件更改时重新编译

来自分类Dev

在sbt中重新编译时自动清除屏幕

来自分类Dev

VueJS在内联模板组件中重新编译HTML

来自分类Dev

导入的较少文件中的更改不会触发重新编译

来自分类Dev

重新编译-Xlint:选中在Java中的细节错误

来自分类Dev

用R包中的-fPIC重新编译

来自分类Dev

重新编译Oracle SQL中的无效对象

来自分类Dev

重新编译不能纠正函数调用中的错字

来自分类Dev

在python中“重新编译”时无法正确打印

来自分类Dev

类和重新编译

来自分类Dev

快速内核重新编译

来自分类Dev

Minecraft Launcher重新编译

来自分类Dev

车把重新编译模板

来自分类Dev

如何重新编译IL

来自分类Dev

如何重新编译内核?

来自分类Dev

重新编译存储过程

来自分类Dev

Minecraft Launcher重新编译

来自分类Dev

快速内核重新编译