4

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

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

4

5 回答 5

12

在一个完美的世界里,你是不朽的,拥有无限的时间,是世界上最好的程序员,无论你在 1 小时内还是 10 年内推出产品都没有区别,这样你就可以自己从头开始编写所有代码,那么也许它会做更多感觉要避开别人的代码。

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

一个好的经验法则是尽可能为给定的解决方案选择社区最喜欢/流行的宝石。使用 gem 的人越多,就越有兴趣保持它的更新,并且越来越多的眼球正在仔细检查它并发送拉取请求。一个在生产环境中经过一群人实战考验的宝石可能比你第一次尝试时想出的要好,对吧?

依赖于一个业余维护者的宝石,甚至没有在自痒的生产应用程序中使用它,您往往会发现一些风险。但即使在这种情况下,如果有一天你不得不分叉他的宝石,你仍然领先于你从头开始的地方。

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

于 2012-06-25T16:01:35.767 回答
4

嗯,这是您为了节省开发时间/预算和缩短上市时间而承担的风险。

如果您发现自己的某个 gem 被遗弃了,那么您可以查看类似的 gem 或 fork 并改进它。无论哪种方式,它仍然比自己开发所有东西要好。

于 2012-06-25T15:52:09.227 回答
1

放弃这种哲学!很多网站/公司都倾向于这样做——在“不是在这里发明”综合症中更为人所知。尤其是推特,它是一个大罪犯。开源很棒——使用它。

于 2012-06-25T16:03:52.237 回答
1

一件作品只有在什么都不能添加,什么都不能带走的情况下才能完美地完成。 ——约瑟夫·朱伯特

这与我们在工作中的 Rails 项目中遵循的理念相同。如果你想在 Gemfile 中添加一个 gem,你基本上必须争论它。如果你找不到一个很好的理由为什么它应该在那里,它就会被踢出。我们绝对不是试图重新发明轮子,但减少可能维护不善的可移动部件的数量是恕我直言的好选择。因此,对维护良好且已建立的 Rails 插件说“是”,但要警惕那些看起来像是快速组合解决方案的东西。更常见的是,您最终不会维护自己的补丁或分叉回购,因此您可能还需要重新发明那个特定的轮子......

于 2012-06-25T22:14:47.313 回答
0

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

我更喜欢使用我发现有用的所有宝石。如果更新后任何 gem 不起作用,您可以随时 fork 并升级它。

于 2012-06-25T20:35:08.683 回答