对于gem的任何构建,确保依赖项安装在构建节点上的最佳实践是什么?
如果某些依赖项尚未安装,则bundle exec将失败。
我应该这样做吗?
bundle install
bundle exec rake在每一个版本上?
还是有更好的方法?
发布于 2019-05-17 00:16:27
rails附带的bin/setup脚本使用bundle check || bundle install作为光标前的步骤。这可能是一个很好的起点。
我在我们的管道上使用bundle install --frozen;frozen确保不会发生对Gemfile.lock的更改。我们使用缓存,所以我甚至不会为bundle check步骤而烦恼。
如果您可以提供有关设置的更多详细信息(docker?库伯内斯?托管提供商?)如果是捆绑包的安装时间产生了问题,那么有人可能会为bundler推荐一种缓存策略。
通常,对于CI管道,我们总是在构建的早期运行bundle install --frozen,即使我们设置了缓存机制。我注意到,在某些情况下,当恢复表单缓存时,可执行文件不会自动链接,因此这可以确保一切正常。它无论如何都不慢;使用缓存,bundle install --frozen步骤只需要一到两秒钟。
发布于 2019-05-17 00:24:20
Bundler通过跟踪和安装所需的gem和版本,为Ruby项目提供了一个一致的环境。Bundler确保您需要的gem出现在开发、试运行和生产中。
要使用所有必需的gem启动项目,请运行:bundle install
bundle exec是一个Bundler命令,用于在当前包(来自目录的Gemfile)的上下文中执行脚本。例如,要从当前gem集运行迁移命令,请运行:
bundle exec rake db:migrate是脚本,其中db是名称空间,migrate是定义的任务名称。
希望它能给我们一些启示。
https://stackoverflow.com/questions/56172349
复制相似问题