Sto lavorando a un'applicazione Rails 4.2 e ho appena aggiunto app/services/fetch_artists.rb
alla struttura. All'interno di questo file, ho definito uno class FetchArtists; end
.Perché Rails non esegue il caricamento automatico delle classi da app/servizi?
Quando si tenta di eseguire rails r 'FetchArtists'
mi dà un NameError: uninitialized constant FetchArtists
.
ho provato guardando ActiveSupport::Dependencies.autoload_paths
e in effetti, app/services
non c'è:
/.../app/assets
/.../app/controllers
/.../app/helpers
/.../app/jobs
/.../app/mailers
/.../app/models
/.../app/controllers/concerns
/.../app/models/concerns
/.../spec/mailers/previews
La mia domanda è, perché questa cartella non viene caricato automaticamente, e cosa devo fare per essere?
EDIT
Molto strano, dopo aver ripetutamente l'esecuzione del comando di cui sopra con rails runner
, appare la nuova cartella sui sentieri autoload. Non ho idea del perché sia successo con un tale ritardo.
Qualcuno ha suggerito che questo potrebbe occuparsi di spring
. Mi piacerebbe saperne di più su questo, dal momento che può aiutare molti altri anche in questa situazione.
Da quello che ho capito, tutto direttamente in 'app' viene caricato automaticamente: http://edgeguides.rubyonrails.org/autoloading_and_reloading_constants.html#autoload-paths – linkyndy
@AndreiHorak Ho notato anche questo. Stai usando Rails standard (non Rails-api ad es.)? – dimakura
@AndreiHorak ho l'impressione che sia necessario riavviare il server per il nuovo DIR da aggiungere al percorso di caricamento ... – Joel