2014-10-16 47 views
3

我在轨道2个问题的应用背景:如何用rails应用程序中的类添加新文件夹?

我有一些类不属于“MODELE”,但在我的系统正需要的,所以我想他们separe

1)如何添加“类'文件夹在应用程序/?(如果我创建它,并把类,他们不包括在内)

2)我怎么能在“应用程序/类”文件夹中的文件夹“模型”(同样的事情在这里,模型不包括如果我移动它)

thx。

回答

5

这是你不清楚你在问什么。

但是,如果你要自动加载其他目录,你可以做到这一点通过把这样的事情在config/application.rb

config.autoload_paths << Rails.root.join('app/class') 

不过,请致电鸵鸟政策目录class,使用的东西描述来代替。

按照约定的代码,不适合模型,控制器,视图,帮助器或关注内容,并放置在项目根目录下的lib目录中。


编辑:

您可以使用水珠加载子目录:

config.autoload_paths << Rails.root.join('app/classes/**/') 
+0

http://stackoverflow.com/questions/19098663/auto-loading-lib-files-in-rails-4 – max 2014-10-16 14:17:04

+0

此解决方案不起作用。它只适用于直接放置文件,但如果我想用子文件夹组织我的类,则不包含它们(例如:“app/classes/effects/attribute.rb”和“class Effect :: Attribute”)。同样的事情,如果我移动“模型”文件夹中的新文件夹“类”,模型不finded ... – Matrix 2014-10-16 14:29:42

+0

好吧,所以默认情况下,它不递归子文件夹...奇怪。所以“** /”是很好的解决方案,thx! – Matrix 2014-10-16 14:52:16

2

在相当长的一段时间Rails已经自动加载在/应用程序的所有路径,如前所述here

你在使用“app/class”目录时可能会遇到问题,因为“class”是保留字,“Class”是Ruby中的类。

没有您例如一个问题:

为例: “应用程序/班/效果/ attribute.rb” 与 “类效果::属性”

注意,在文件中路径“效果”最后有一个“s”,而你的模块名称不是“Effect :: Atttribute”。那些应该匹配。无论是否以“s”结尾,当它们匹配时,Rails自动加载应该可以工作。

您应该删除任何关于追加到config.autoload_paths的其他建议。

+0

你是绝对正确的,我虽然明确列出了'models,controllers'等目录。 – max 2014-10-16 17:41:14

+0

这是我的消息中的一个错误,称为“类”而不是“类”的文件夹;) – Matrix 2014-10-16 18:07:17

相关问题