看起来,对于嵌套级别不止一个的模块名称,拐点不起作用。
如果config/initializers/inflections.rb
中包含以下内容:
ActiveSupport::Inflector.inflections do |inflect|
inflect.acronym 'VCloud'
end
然后,在
app/
下创建目录时,说app/services/vcloud/
,您将获得两个模块:Vcloud #=> Vcloud
VCloud #=> VCloud
但是,如果您创建具有更高嵌套级别的目录,请说
app/services/vmware/vcloud/
,您将仅获得一个模块:Vmware::Vcloud #=> Vmware::Vcloud
Vmware::VCloud #=> NameError: uninitialized constant Vmware::VCloud
这是一个错误吗?
最佳答案
我会用这是一个错误。您可以使用(在初始化程序中)解决它:
module ActiveSupport::Inflector
def underscore_with_acronym_fix(string)
words = string.split('::')
return words.map(&method(:underscore)).join('/') unless words.one?
underscore_without_acronym_fix(string)
end
alias_method_chain :underscore, :acronym_fix
end
我将提出拉动请求以解决此问题,但是将需要更多时间来确认它不会破坏任何东西。这里有很多情况。
关于ruby-on-rails - 缩写形式的Rails模块名称,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26485486/