我在Rails 3.2.11项目中有一个名为app/queries/visible_discussions.rb
的文件,看起来如下:
class VisibleDiscussions
...
end
我想给查询命名空间,这样我就可以用Queries::VisibleDiscussions
这样的东西来调用它,所以我试着做以下事情:
module Queries
class VisibleDiscussions
...
end
end
然而,当我试图从rails控制台调用Queries::VisibleDiscussions
时,我得到了uninitialized constant Queries (NameError)
。
任何想法?
如果你将lib
添加到你的autoload_paths,那么它将尊重lib - lib/query/visible_discussions.rb
下的命名空间
或者在app下创建一个新目录-比如src,然后在那里嵌套你的代码- app/src/query/visible_discussions.rb
我会在你的文章中使用第三种样式,即
module Query
class VisibleDiscussions
...
end
end
这两个解决方案对我来说都很烦人,可能有一种方法可以告诉rails在app下命名空间目录,但我不知道如何做到
Rails需要知道加载什么目录(默认值的一部分)。试一试:
#config.application.rb
config.autoload_paths += %W(#{config.root}/queries)