Rails 3命名空间&的麻烦定制类(未初始化的常量) [英] Rails 3 trouble with namespaces & custom classes (uninitialized constant)
问题描述
我的Rails 3.2.11项目中有一个名为app/queries/visible_discussions.rb
的文件,如下所示:
I have a file in my Rails 3.2.11 project called app/queries/visible_discussions.rb
which looks like the following:
class VisibleDiscussions
...
end
我想为查询命名空间,以便可以使用Queries::VisibleDiscussions
之类的名称进行调用,因此我尝试执行以下操作:
I'd like to namespace the query so that I can call it using something like Queries::VisibleDiscussions
so I tried to do the following:
module Queries
class VisibleDiscussions
...
end
end
但是,当我尝试从Rails控制台调用Queries::VisibleDiscussions
时得到了uninitialized constant Queries (NameError)
.
However, I'm getting a uninitialized constant Queries (NameError)
when I try to call Queries::VisibleDiscussions
from the rails console.
有什么想法吗?
推荐答案
如果将lib
添加到autoload_paths,则它将遵循lib-lib/query/visible_discussions.rb
if you add lib
to your autoload_paths then it will respect the namespacing under lib - lib/query/visible_discussions.rb
或在应用程序下创建一个新目录-说src,然后将您的代码嵌套在其中-app/src/query/visible_discussions.rb
or create a new dir under app - say src and then nest your code there - app/src/query/visible_discussions.rb
我会在您的帖子中使用第3种样式,即
i would use the 3rd style in your post for either of these, i.e.
module Query
class VisibleDiscussions
...
end
end
这两种解决方案都让我很烦,也许有一种方法可以将Rails告知应用程序下的命名空间目录,但是我不知道如何实现
both of these solutions are annoying to me, there might be a way to tell rails to namespace directories under app, but i have no clue how it would be done
这篇关于Rails 3命名空间&的麻烦定制类(未初始化的常量)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!