Ruby Rails Lib文件夹命名约定

时间:2012-04-15 22:50:34

标签: 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

或者

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

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

1 个答案:

答案 0 :(得分:6)

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)

这应该照顾你的问题。