2015-03-11 10 views
13

IRails selbstladende voll aktivierten Namen wie API

  • /lib/dokuwiki.rb
  • /lib/dokuwiki/exception.rb
  • /lib/dokuwiki/api/connection.rb eine gewisse Struktur haben

dokuwiki.rb

require 'dokuwiki/exception.rb' 

module Dokuwiki 
    ... 

dokuwiki/api/connection.rb

module Dokuwiki 
    module API 
    class Connection 
     ... 

Jetzt, wenn ich versuche, Dokuwiki::API::Connection.new von einem Controller zu nennen (ohne require), Rails Standardkonstanten Autoloading ausfällt. Ich glaube, das ist, weil das ::API Modul einen Ordner mit dem Namen /a_p_i/ anstelle von /api/ haben sollte, aber das ist hässlich.

Natürlich könnte ich 'dokuwiki/api/connection.rb' in der Hauptdatei '/lib/dokuwiki.rb' verlangen, aber dann würde diese Klasse nicht automatisch neu geladen werden (was in einem Entwickler etwas nervig ist) Kontext)

Was kann ich tun, um den netten Ordnernamen /api/ zu behalten und einige Änderungen an /lib/dokuwiki/api/connection.rb vornehmen zu können, ohne meinen Server neu starten zu müssen?

Antwort

26

Es gibt eine Datei namens config/initializers/inflections.rb.

hinzufügen darin

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

und der API-Namensraum wird als ein Verzeichnis namens api

erhältlich