Ruby Rails Lib文件夹命名约定

Jim*_*did 5 ruby-on-rails naming-conventions

我似乎遇到了Rails中Lib文件夹的命名约定的问题,并且提供给我的错误消息没有用.[例如,我收到一条消息说XXX :: YYY :: TextBox应该被定义为xxx/yyy/text_box.rb,即使它明确定义在那里.]我认为我的约定是错误的.

假设我正在研究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
Run Code Online (Sandbox Code Playgroud)

要么

#your_module/my_module/my_class.rb
class MyClass
  ...
end
Run Code Online (Sandbox Code Playgroud)

换句话说,我是否需要将类嵌套在模块结构中?

And*_*rew 6

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

要获取包含的文件,您需要在application.rb文件中指定您想要它们,请参阅此示例:从Rails 3中的lib文件夹加载模块/类的最佳方法?

我建议制作一个刚刚调用的文件夹lib/modules,因为你可能不会有很多.命名文件my_class.rb.然后在application.rb你需要:

config.autoload_paths += %W(#{config.root}/lib/modules)
Run Code Online (Sandbox Code Playgroud)

这应该照顾你的问题.