Rails用于不同类的相同文件名

时间:2016-05-26 18:35:34

标签: ruby-on-rails ruby

有型号价格(型号/ price.rb)

class Price
end

同样在lib目录中,我有import / detector / price.rb文件

class Import::Detector::Price
end

Lib目录通过

添加到自动加载路径
config.autoload_paths += Dir["#{config.root}/lib/**/"]

所以运行Price.new我得到错误

无法自动加载常量价格,预期lib / import / detector / price.rb来定义它。

导入:: Detector :: Price.new就可以了

我的错误是什么?

UPD。 最有趣的

此文件还有/ car / property / price.rb

class Car::Property::Price
end

一切都还可以。 Car :: Property ::价格可用。

1 个答案:

答案 0 :(得分:1)

尝试

config.autoload_paths += Dir["#{config.root}/lib"]

而不是

config.autoload_paths += Dir["#{config.root}/lib/**/"]

使用**,Dir将返回lib下的每个目录,并将它们全部(作为根目录)放在加载路径中。它应该只是加载路径中的主要lib目录,因为rails将使用命名空间来计算子目录。

Rails autoloading — how it works, and when it doesn't