0

只是一个奇怪的问题,我在任何地方都找不到(也许当我问谷歌时我的措辞错误)......我在几个模型中有一些共享功能,但没有以任何我想要的方式共享做一个实际的类来扩展,只是我想混入的小实用方法。放置这些模块的“最佳实践”位置在哪里?

我可以把它们放进去./lib,但由于某种原因感觉不对,我不确定。放置这些东西的典型位置在哪里?

编辑: 我明白为什么 ./lib 现在感觉不对了。我没有意识到在 Rails 3 中它不再自动加载 ./lib 默认情况下,所以我虽然这已经转移到其他地方。我想它的意义在于它现在取决于你。谢谢!

4

3 回答 3

3

我们试图“命名”这些类型的东西,并将它们放在适当的地方。例如,“关注”是 mixin 的通用名称,它作为模块 mixin 提供特定功能,因此我们将它们放在app/concerns. (事实上​​,我相信这是 Rails 4 中的默认文件夹)。您可能需要适当调整自动加载路径。

于 2013-06-24T18:30:50.180 回答
1

./lib is an appropriate place. You could namespace these similar modules together, under say, ./lib/active_record_mixins/

于 2013-06-24T18:11:48.370 回答
1

至少在你描述你的 mixin 时,没有“最好”的地方。

始终您决定;您可以将所需的任何内容添加到自动加载列表中。

我不明白为什么 lib 不“感觉不错”,它和其他任何东西一样好。某些类型的 mixin 具有名称,例如“关注”和“装饰器”,但不清楚您混合的内容是否属于这一广泛类别。

lib关闭所有内容的自动加载以控制自动加载,而不是因为它不是放置库的好地方。对于不适合广泛的应用范围类别的模块(想想“装饰器”或“关注点”)lib似乎完全合理。

自动加载意味着您​​必须使用require而不是到处加载所有内容;这不一定是坏事,IMO。

因为它完全取决于代码的性质、应用程序的结构以及您希望如何构建应用程序,所以我不相信有一个开放式的“最佳”实践。

于 2013-06-24T19:52:08.193 回答