Rails 自动加载完全大写的名称,如 API

Rails autoloading fully capitalized name like API

我有一些结构

dokuwiki.rb

require 'dokuwiki/exception.rb'

module Dokuwiki
  ...

dokuwiki/api/connection.rb

module Dokuwiki
  module API
    class Connection
      ...

现在,当我尝试从控制器调用 Dokuwiki::API::Connection.new(没有任何 require)时,Rails 默认常量自动加载失败。我相信这是因为 ::API 模块应该有一个名为 /a_p_i/ 而不是 /api/ 的文件夹,但这很丑陋。

当然我可以在主“/lib/dokuwiki.rb”文件中要求 'dokuwiki/api/connection.rb',但是它不会自动重新加载这个 class(这在开发环境)

我该怎么做才能保留漂亮的 /api/ 文件夹名称并能够对 /lib/dokuwiki/api/connection.rb 进行一些实时修改而无需重新启动我的服务器?

有一个名为 config/initializers/inflections.rb 的文件。

加入其中

ActiveSupport::Inflector.inflections do |inflect|
  inflect.acronym 'API' 
end

和 API 命名空间将作为名为 api

的目录提供