2017-07-04 2 views
0

Ich habe ein "Dienste" Verzeichnis in App/erstellt, wo ich einige Klassen (Dienste) erstellt habe. Jetzt ist es wie folgt aussieht:RoR Autoload Unterverzeichnisse

-app 
    -services 
     -class1 
     -class2 
     -class3 
     -class4 

Vorerst habe ich hinzugefügt app/Dienstleistungen in config/spring.rb

%w(
    .ruby-version 
    .rbenv-vars 
    tmp/restart.txt 
    tmp/caching-dev.txt 
    app/services 
    app/errors 
).each { |path| Spring.watch(path) } 

Also meine Klassen in Dienste geladen.

Aber jetzt möchte ich, dies zu tun:

-app 
    -services 
     -dir1 
     -class1 
     -class2 
     -dir2 
     -class3 
     -class4 

Ich habe Fehler:

nicht initialisierte Konstante TransactionService :: AuthorizeRequest

Wie ein automatisches Laden dir und subdir?

Antwort

1

Rails versucht Namespaces nach Verzeichnisnamen zu erraten & Dateinamen. Also, um eine TransactionService :: AuthorizeRequest Klassennamen, sollten Sie die genaue folgende Struktur haben:

app 
- services 
-- transaction_service 
--- authorize_request.rb 

Ihre Klasse sould wie folgt aussieht:

module TransactionService 
    class AuthorizeRequest 
    end 
end