在不使用任何额外宝石的情况下在铁轨上开发红宝石是不是很奇怪

时间:2011-05-20 04:35:44

标签: ruby-on-rails ruby-on-rails-3 rubygems

我总是发现许​​多rails开发人员通常会将很多任务推迟到宝石而不是自己编写代码,有时我发现自己根本没有使用它们,因为宝石的行为并不完全像我怎么想以某种方式,对你们这些人来说这有点奇怪吗?

顺便说一句,我确实使用gems执行加密任务,如bcrypt和mysql2进行数据库连接,但我从未发现自己使用像Devise / Authlogic这样的宝石进行身份验证。

4 个答案:

答案 0 :(得分:4)

你可以忘记Rails并问自己 - “我是否需要标准库或者我是否需要创建自己的库?”

重用存在代码是软件开发中的一个好习惯。

答案 1 :(得分:2)

在Rails哲学中,使用宝石不重新发明轮子,最重要的是用更少的东西做更多的事情。

好的宝石应该是可配置的,因为你可以根据自己的需要使用它。

答案 2 :(得分:1)

你问这是不是很奇怪?

不,不是。我经常遇到同样的问题需要解决。当您使用宝石时,通常需要根据您的需要进行调整。当您更新此gem时,您可能需要再次应用更改,或者当gem开始以您想要的其他方式操作时出现问题。

当你创建自己的解决方案时,你知道它很好(所以,你不需要处理其他人的错误,只需要处理你自己的错误),解决方案总是完全符合你的需求,你随时改变它需要。

您使用的宝石示例(bcrypt和mysql2)是一些非常常见的任务的好例子,它们在您的应用程序的生命周期内不需要任何修改。您不需要更改加密协议,数据库连接也不需要特定于应用程序的更改。

但是身份验证系统可能需要进行调整,因此最好依赖于您自己的独立解决方案。但是,您可能希望复制“他们的”解决方案,而不会使您的项目依赖于“外部”代码。项目gnulib采用了类似的方法。

更新:

请参阅文章http://www.aidanf.net/rails_user_authentication_tutorial。在那里你会发现编写自己的身份验证系统的一些原因,解释得比我尝试的要好得多;)

答案 3 :(得分:1)

我认为我同意每次想要在rails应用程序中添加功能时都不使用插件/宝石的位置。

我觉得某些宝石或插件在与其他宝石或插件相关联时可能表现得很奇怪。我想到了act_as_ *,认证系统..

例如,要构建自己的标记系统,这很容易,您可以学习act_as_taggable并尝试编写自己的标记系统。我认为花费的时间与学习插件的时间相同。