【问题标题】:Ruby Rails Lib Folder Naming ConventionRuby Rails Lib 文件夹命名约定
【发布时间】:2012-04-27 08:30:24
【问题描述】:

我似乎对 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

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

【问题讨论】:

    标签: ruby-on-rails naming-conventions


    【解决方案1】:

    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)
    

    这应该可以解决您的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-21
      • 2011-06-24
      • 1970-01-01
      • 1970-01-01
      • 2019-03-20
      相关资源
      最近更新 更多