Rails 自动加载完全大写的名称,如 API
Rails autoloading fully capitalized name like API
我有一些结构
- /lib/dokuwiki.rb
- /lib/dokuwiki/exception.rb
- /lib/dokuwiki/api/connection.rb
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
的目录提供
我有一些结构
- /lib/dokuwiki.rb
- /lib/dokuwiki/exception.rb
- /lib/dokuwiki/api/connection.rb
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