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

时间:2015-03-11 15:17:17

标签: ruby-on-rails ruby constants

我有一些结构

  • /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',但是它不会自动重新加载这个类(这在开发环境中有点烦人) )

如何保留好/api/文件夹名称并能够对/lib/dokuwiki/api/connection.rb进行一些实时修改而无需重新启动服务器?

1 个答案:

答案 0 :(得分:51)

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

添加

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

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

的目录提供