我正在使用Ruby on Rails 3.2.2。我想知道以下的想法(从previous question出生)是否正确:
我倾向于不使用第三方宝石(至少在可能和合理的情况下),因为它们可能随时被抛弃。此外,如果Ruby on Rails框架发生更改,我可能必须等待更新这些gem才能将我的应用程序更新到最新的RoR版本。
答案 0 :(得分:12)
在一个完美的世界,你是不朽的,拥有无限的时间,是世界上最好的程序员,无论你是在1小时还是10年内推出你的产品都没有区别,所以你可以自己从头开始编码所有东西,然后也许避免其他人的代码更有意义。
但在现实世界中,人们已经为你解决了问题。宝石允许您插入这些解决方案。
一个好的经验法则是尽可能优先考虑社区最喜欢/最受欢迎的宝石。使用宝石的人越多,人们就越有兴趣保持它的更新,越多的眼球仔细检查它并发送拉动请求。有可能是生产环境中的一群人经过战斗测试的宝石比你第一次尝试时想出的更好,对吗?
依赖于一个业余爱好者维护者的宝石,即使在一个自我搔痒的生产应用程序中甚至没有使用它,你往往会发现一些风险。但即使在这些情况下,如果你最终不得不分叉他的宝石,如果你从头开始,你仍然领先于你的位置。
更好的趋势是避免从头开始编写所有内容,而是利用其他有类似需求的人的大脑。
答案 1 :(得分:4)
嗯,这是您为节省开发时间/预算和缩短产品上市时间所带来的风险。
如果你发现自己的某个宝石被遗弃了,那么你可以看一下类似的宝石或叉子并改进它。无论哪种方式,它仍然比自己开发一切更好。
答案 2 :(得分:1)
放弃这个理念!许多网站/公司倾向于这样做 - 它在"Not invented here"综合症中更为人所知。特别是Twitter,big offender.开源很棒 - 使用它。
答案 3 :(得分:1)
只有当没有任何东西可以添加到任何东西并且没有被带走时,工作才能完美地完成。 - Joseph Joubert
这与我们的Rails项目在工作中遵循的理念相同。如果你想在Gemfile中添加一个gem,你基本上不得不争论它。如果你找不到它应该在那里的一个很好的理由,它就会被淘汰出局。我们绝对不是要重新发明轮子,但保持可能维护不良的可移动部件的数量是恕我直言,这是一个不错的选择。所以对良好维护和建立的Rails插件说“是”,但要注意看起来像快速抛出的解决方案的东西。更常见的是,不是你最终维护自己的补丁或分配回购,所以你可能已经重新发明了特定的轮子......
答案 4 :(得分:0)
尝试设计 gem,然后自己实现其功能。因此,您可以定义自己对问题的看法。
我更喜欢使用我认为有用的所有宝石。如果更新后任何gem都不起作用,您可以随时进行分叉和升级。