Kub*_*der 42 ruby directory ruby-on-rails organization models
我想知道是否有任何关于在Rails应用程序中放置非标准Ruby文件的最佳实践,哪些不适合任何默认目录(controllers/ models等).
我说的是控制器/模型等使用的类,但不是任何Rails基类的子类.包含从模型中提取的功能的类,以减少它们的负担.其中一些看起来像模型,但不是AR模型,其中一些看起来更像"服务",有些是介于两者之间或其他东西.
一些随机的例子:
我现在已经有了很多这些,其中一些被添加到lib最后作为一堆随机类和模块,一些潜入app/models.我想以某种方式组织这个,但我不知道从哪里开始.
只应该进入AR车型app/models吗?或者也可以放置任何域或帮助模型?你如何决定某件事是模特?
如果不适合的一切都app进入lib?或许我应该添加一些新的自定义子目录app?什么子目录,以及如何划分自定义类?
你如何在你的项目中处理这个?我知道每个项目都有点不同,但必须有一些相似之处.
hou*_*se9 15
好问题 - 我没有具体的答案
但我建议查看这篇文章 - http://blog.codeclimate.com/blog/2012/02/07/what-code-goes-in-the-lib-directory/ - 一定要仔细阅读所有评论
在当前的项目中我在app/models下有很多非ActiveRecord对象,它工作但不理想我在lib下放了're-useable'非应用程序特定代码
我在侧面项目中尝试过的其他替代方案(比如我们有一堆命令对象)rails在app下的命名空间时很痛苦,它默认将所有内容加载到同一个命名空间中
app/
commands/
products/create_command.rb # Products::CreateCommand
products/update_price_command.rb # Products::UpdatePriceCommand
Run Code Online (Sandbox Code Playgroud)
alternate,除了src或app_name目录下的rails之外的所有内容
app/
src/
commands/
create_product.rb # Commands::CreateProduct
update_product_price.rb # Commands::UpdateProductPrice
Run Code Online (Sandbox Code Playgroud)
我没有找到一个很好的解决方案,理想情况下,第二个更好,但很高兴没有在应用程序下的额外目录,这样你打开应用程序,看到控制器,命令,模型等...
您触及了许多不同的用例,我认为这部分最接近"正确"的答案:
我现在有很多这些,其中一些被添加到lib,最终成为一堆随机类和模块,一些潜入app/models.我想以某种方式组织这个,但我不知道从哪里开始.
这在我的书中非常正确.你没有提到的一件事是将各种碎片提取到不同的宝石中.与外部服务相关的类是提取的最佳候选者,如果它们足够通用,则是策略类.这些可以是私有的,因为运行您自己的gem服务器并不难,然后您可以明显地在ROR应用程序中重用它们.
最后也是最具体的一点,我将重建工作归入lib/jobs.
我的经验法则是,如果它是某种类型的模型,它会进入app/models.如果不是,它可能属于中lib或一些适当命名的子目录物,如lib/jobs,lib/extensions,lib/external,等.
| 归档时间: |
|
| 查看次数: |
15865 次 |
| 最近记录: |