gpt4 book ai didi

ruby-on-rails - 应该将 gems 与该应用程序 bundle 在一起吗?

转载 作者:数据小太阳 更新时间:2023-10-29 07:07:12 27 4
gpt4 key购买 nike

刚拿到一台新机器,我借此机会尝试了一些新东西。RVM 很棒,我一直在使用 gemset,但在阅读了一些博客文章后,我决定使用 switch 到 rbenv 并使用 bundler 专门管理我的 gem,如 Ruby Rogues episode 45 中所述。 .

我并没有那么多合作,如果我这样做,通常是与另外一两个人合作。

bundler 文档详细说明了通过运行将 gem 打包到 vendor/cache 目录中的能力:

$ bundle package
$ bundle install --local

伟大的私有(private) gem ,可以 checkin 源代码控制;我想部署到一个干净的服务器或更容易协作?

但是,如果您将 GemfileGemfile.lock 检查到源代码管理中,那么需要什么 bundle package

Ryan Mcgeary 在 blog post 中提倡这种方法形成于 2011 年初和另一个 blog post从 2010 年开始,Yehuda Katz 说:

You might want to install your bundled gems to a different location, such as a directory in the application itself. This will ensure that each application has its own copies of the gems, and provides an extra level of isolation.

我想这种隔离很像 gemset,我可以想象当你有一个巨大的系统 gem 列表时,很难知道你的应用程序实际使用了哪些。

所以将 gem 与应用程序一起打包?

有人这样做吗?这种做法过时了吗?

最佳实践是什么?在应用程序中 bundle Gem 的优点/缺点是什么?

最佳答案

我认为 bundle 包的用例范围很窄。

Gemfile 和 Gemfile.lock 处理版本锁定,但最后你还是去 ruby​​gems.org 并在 bundle install 时下载 gem。

我认为 bundle 包有用的三种场景:

1)我有一个干净的生产环境,我根本不想碰rubygems.org。这可能是由于安全协议(protocol)、有限的互联网访问等原因造成的。最后,我得到了一个完全独立的应用程序包,其中所有的精华都排好并准备就绪,而没有真正接触服务器环境或互联网。

2) 我想下载 gem,解压它,搞砸它,然后使用那个特定的 gem。特别是如果我不想处理 git、fork 或任何类似的东西。

3) 从开发团队的角度来看,您可以说所有使用的 gem 都必须打包并放在应用程序本地。您不必担心开发人员安装不同的版本、接触他们的环境等。这个原因在我看来有点弱,但我已经见过一两次这种逻辑。

最后,除非你有一个你正在积极寻找这种能力的用例,否则我会远离它。

关于ruby-on-rails - 应该将 gems 与该应用程序 bundle 在一起吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14304361/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com