Ewo*_*ann 5 ruby ruby-on-rails ruby-on-rails-4
有没有办法告诉Rails某个文件夹中的所有文件都包含在某个命名空间中?
就是
我有一个文件bar.rb在app/foo。Rails将假定此文件已定义Bar,但我希望此文件定义Foo::Bar。
我知道我可以通过将根目录添加到Rails的自动加载路径来实现此目的,但这不是一个真正的解决方案。还有其他方法可以告诉Rails,其中的所有文件都app/foo驻留在Foo名称空间中吗?
编辑:文件树进行澄清
app
assets
controllers
models
foo
bar.rb
quux.rb
Run Code Online (Sandbox Code Playgroud)
我希望能够分别定义Foo::Bar和和中,同时还使用Rails自动加载。无需诉诸如下的树形结构:Foo::Quuxbar.rbquux.rb
app
assets
controllers
models
foo
foo
bar.rb
quux.rb
Run Code Online (Sandbox Code Playgroud)
Rails 不假定名称空间,它根据名称空间假定源文件的路径,因此:
$ cat app/foo/bar.rb
module Foo
class Bar
def bar
puts "i'm here"
end
end
end
Run Code Online (Sandbox Code Playgroud)
$ rails c
2.2.0 :007 > b=Foo::Bar.new
=> #<Foo::Bar:0x00000005272770>
2.2.0 :008 > b.bar
i'm here
=> nil
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
760 次 |
| 最近记录: |