Pet*_*xey 4 architecture ruby-on-rails
多年来,我一直遵循 Rails 惯例,将规范文件放在规范文件夹中,并与它们描述的代码完全分开:
- app
- controllers
- application_controller.rb
- models
- user.rb
- spec
- controllers
- application_controller_spec.rb
- models
- user_spec.rb
Run Code Online (Sandbox Code Playgroud)
然而,这种方法可能会带来很多不必要的错位和混乱,我真的很喜欢 Angular 将组件、它们的规范和代码并排放置的方法。在从事过大型 Rails 项目后,规范和代码之间的错位会变得令人难以置信的混乱和迷失方向。
我想尝试在 rails 中做同样的事情,并将规范移动到他们描述的文件旁边,以便目录结构更类似于:
- app
- controllers
- application_controller.rb
- application_controller_spec.rb
- models
- user.rb
- user_spec.rb
Run Code Online (Sandbox Code Playgroud)
我需要改变哪些事情才能使这项工作发挥作用?
想到的几件事是:
不过,我还需要什么其他东西,有什么需要特别注意的吗?
这可能是可能的,但可能不切实际。
首先,假设您正在使用rspec,则必须配置/覆盖测试套件期望找到规范文件的路径,这可能并不难,但如果您使用任何扩展名rspec,(或任何其他测试套件),您必须对规范路径的任何引用进行调整,以使您的规范正确运行,这可能会增加未来的维护工作。
你也可能会无法使用发电机,除非你打补丁,当你运行一个生成器,创建规范文件中的类,因为它们会在默认情况下的能力,把规范文件spec/models,spec/controllers等等。
覆盖这些类型的东西是可能的,但需要维护,并且可能被大多数 Rails 开发人员认为“不是 Rails 方式”。Rails 是一个固执己见的框架,也就是说,任何开发你的应用程序的开发人员几乎肯定会希望在spec默认情况下看到目录中的规范文件,因此你可能会受到未来团队成员的反对。
可能还有其他问题,但这些只是首先想到的事情。