2

如果我需要在rails中向我的控制器添加(项目特定的)类,那么放置和“包含”它们/那里.rb文件的正确方法/位置是什么?(引用:不是 ruby​​ 关键字包括)

我是rails新手,没有找到正确的方法。LIB 听起来像是更多的公共图书馆,而且 - 我所学到的 - 在开发模式下默认不会重新加载。

当然,我可以将所有内容都放在 controler.rb 中,但是...


我的分析器:

首先:没有规则,如果您记住(或像我一样学习)rails 规则:NameOfCla -> name_of_cla(.rb) <-- 不使用类作为明确的词

以你喜欢的方式命名你的班级:

class ExtendCon #<--- not using controller here for clearence
    ....

把它放在一个文件extend_con.rb中,请等待路径说明。如果您将班级命名为“MYGreatThing”,它将是“m_y_great_thing”(从不测试),因此请避免使用中文字符

如果您的控制器使用

@letssee=ExtendCon.new

rails 会自行学习该类和文件 (extend_con)。我仍然没有弄清楚是否需要重新启动服务器。(第一次)

选择放置文件的路径:(我更喜欢 Daves 方式)app/myexten或您喜欢的方式,使其成为“应用程序”特定的,并且仍然与标准 rails 的“事物”不同

如果你不像我一样懒惰(我把它放在 app/ontrollers 中)把你选择的路径放进去 config/application.rb喜欢(评论在那里找到它)

# Custom directories with classes and modules you want to be autoloadable.
# config.autoload_paths += %W(#{config.root}/app/controllers)
config.autoload_paths += %W(#{config.root}/app/myexten)   

这个适用于所有模式,包括“开发者”,我不需要将“我自己”的东西放在 app/lib 中

4

2 回答 2

0

这取决于。

我倾向于将明确使用的库代码(例如,实例化、注入等到应用程序级工件中)放入app/xxx表示xxx事物“类型”的位置,如decorators,services等。

神奇的东西往往会以lib.

任何地方的代码都可以添加到自动加载路径中,初始化程序自动需要,等等。

于 2013-07-25T18:14:40.510 回答
0

Rails 4 为控制器提供了一个内部目录,称为关注点。你可以尝试使用它。

app/controlls/concerns

如果你有concerns/foo_bar.rb,你包括它如下:

class FooController < ApplicationController
  include FooBar
end

模型也有自己的关注目录。我发现这种方法很有用,它可以应用于 Rails 3。您只需将目录添加到加载路径。

于 2013-07-25T23:33:12.413 回答