避免使用第三方gem是正确的吗?

我正在使用Ruby on Rails 3.2.2。 我想知道以下的想法(从我之前的问题出生)是否正确:

我倾向于不使用第三方gem(至少在可能和合理的情况下),因为它们可能随时被抛弃。 此外,如果Ruby on Rails框架发生变化,我可能需要等待更新这些gem才能将我的应用程序更新到最新的RoR版本。

在一个完美的世界里,你是不朽的,拥有无限的时间,是世界上最好的程序员,无论你是在1小时还是10年内推出你的产品都没有区别,所以你可以从头开始自己编写所有代码,然后它可能会产生更多意识到避免别人的代码。

但在现实世界中,人们已经为你解决了问题。 gem允许您插入这些解决方案。

一个好的经验法则是尽可能优先考虑社区最喜欢/最受欢迎的gem。 使用gem的人越多,人们就越有兴趣保持它的更新,越多的眼球仔细检查并发送拉动请求。 有可能是生产环境中一群人经过战斗测试的gem比你第一次尝试时想到的好,对吧?

依赖于一个业余爱好者维护者的gem,甚至在一个自我搔痒的生产应用程序中都没有使用它,你往往会发现一些风险。 但即使在这些情况下,如果你最终不得不分叉他的gem,如果你从头开始,你仍然领先于你的位置。

更好的趋势是避免从头开始编写所有内容,而是利用具有类似需求的其他人的大脑。

嗯,这是您为节省开发时间/预算和缩短产品上市时间所带来的风险。

如果你发现自己的某个gem被抛弃了,那么你可以看一下类似的gem或叉子并改进它。 无论哪种方式,它仍然比自己开发一切更好。

放弃这个哲学! 许多网站/公司都倾向于这样做 – 它在“Not invented here”综合症中更为人所知。 特别是推特,Twitter是一个大罪犯。 开源很棒 – 使用它。

只有当没有任何东西可以添加到任何东西并且没有被带走时,工作才能完美地完成 – 约瑟夫·朱伯特

这与我们在工作中使用Rails项目时所遵循的理念相同。 如果你想在Gemfile中添加一个gem,你基本上不得不争论它。如果你找不到它应该在那里的一个很好的理由,它就会被淘汰出局。 我们绝对不会试图重新发明轮子,但保持可能维护不良的可移动部件的数量是恕我直言,这是一个不错的选择。 所以对维护良好且已建立的Rails插件说“是”,但要注意看起来像快速抛出的解决方案的东西。 更常见的是,不是你最终维护自己的补丁或分配回购,所以你可能已经重新发明了特定的轮子……

例如,尝试设计 gem,然后自己实现其function。 因此,您可以定义自己对问题的看法。

我更喜欢使用我认为有用的所有gem。 如果更新后任何gem都不起作用,您可以随时进行分叉和升级。