我编写了一个跟随常规目录结构的rails应用程序(模型中的模型代码,控制器中的控制器代码)。

但我现在正在研究一项新功能,为此我写了一些(我会称之为)“服务”。代码。结果 新功能是将一些数据导入系统,目前只有两个类进行导入,但可以扩展到更多。

我不相信新代码属于模型,因为它不会对任何对象建模(它也不与任何单个对象直接相关)。 我当然不认为它属于控制器,因为它不是表示逻辑。

所以,我创建了一个“app / services”目录并把它放在那里。 我还创建了一个“测试/服务”。我已经完成测试的目录。

我认为一切都很好但是当我运行'rake:test'或'autotest'时,我的新服务测试没有运行。
现在我希望有一种方法可以让rake拿起它们,但这是一个警告标志,我做错了什么?
代码应该存在其他地方,还是我在某种程度上不做“Rails方式”?

一般来说,在我经常发现rails已经有解决方案之前我遇到过这样的问题,但我并不知道这个惯例。 这是其中一个案例吗?

有帮助吗?

解决方案

这就是'lib'文件夹的用途。

lib文件夹位于自动查找路径中,因此您可以

class MyFoo
end

lib / my_foo.rb 中,然后只需调用

MyFoo.new
从控制器

加载代码而不需要 require'my_foo'

其他提示

./ lib绝对是值得去的地方。

另一个放置它的地方是在config下的initializers目录中,具体取决于你在做什么。您也可以考虑将整个内容整合到一个插件中,但如果它是一个少量的功能,那么它可能是不值得的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top