2012-04-15 162 views
4

我似乎遇到了Rails中Lib文件夹命名约定的问题,并且提供给我的错误消息也无济于事。 [例如,我收到一条消息,指出XXX :: YYY :: TextBox应该定义为xxx/yyy/text_box.rb,即使它明确定义在那里。]我认为我会让惯例变得错误。Ruby Rails Lib文件夹命名约定

假设我在YourModule :: MyModule :: MyClass上工作。我清楚地得到该文件应位于

的lib/your_module/my_module/my_class.rb

但是应该在这里实际的文件是什么样子?其中哪一个(如果有的话)是正确的?

#your_module/my_module/my_class.rb 
module YourModule 
    module MyModule 
    class MyClass 
     ... 
    end 
    end 
end 

或者

#your_module/my_module/my_class.rb 
class MyClass 
    ... 
end 

换句话说,我需要嵌套模块结构或不里面的类?

回答

5

lib文件夹的约定很少,因为它不是自动加载的。因此,如何组织文件取决于您,但您必须正确命名类。你的第一个例子是正确的。

要获得这些文件包括你需要指定要他们在你application.rb中的文件,请参阅下面的例子:Best way to load module/class from lib folder in Rails 3?

我会建议做一个刚刚打电话lib/modules文件夹,因为你可能不会有很许多。将文件命名为my_class.rb。然后在application.rb您需要:

config.autoload_paths += %W(#{config.root}/lib/modules) 

这应该把你的问题的关心。