是否可以在不嵌套在文件夹中的情况下为Rails自动加载命名空间?

Ewo*_*ann 5 ruby ruby-on-rails ruby-on-rails-4

有没有办法告诉Rails某个文件夹中的所有文件都包含在某个命名空间中?

就是

我有一个文件bar.rbapp/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)

Eug*_*rov 0

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)