2015-06-25 13 views
7

ho alcuni binari motore 'core', e ho:Rails riguarda motori di percorsi autoload

# core/app/models/core/concerns/user_helper.rb 
module Core 
module UserHelper 
    extend ActiveSupport::Concern 
    included do 
    # some methods 
    end 
end 
end 

# core/app/models/core/user.rb 
module Core 
class User < ActiveRecord::Base 
    include Core::UserHelper 
end 
end 

tuttavia dice inizializzato costante Nucleo :: userhelper. Così sembra il motore non carica le sue preoccupazioni per default, quindi ho aggiunto che nei percorsi autoload

module Core 
    class Engine < ::Rails::Engine 
    config.autoload_paths += %W(#{Core::Engine.root}/app/models/core/concerns) 
    isolate_namespace Core 
    end 
end 

Ed ora io finisco per questo errore: Impossibile caricare automaticamente costante userhelper, myapp atteso/core/app/modelli/core/preoccupazioni/user_helper.rb per definirlo

Quindi cosa c'è che non va qui? Quando ho controllato la guida http://edgeguides.rubyonrails.org/engines.html e non aveva le preoccupazioni nella directory concern, ma piuttosto in lib/preoccupazioni e avevo tutti i riferimenti per preoccuparmi di usare Core :: Concerns :: MyConcern, quindi è questo dove mettere i problemi nel motore?

Grazie

Modifica

Yury commento spiegato il problema, sembra che in rotaie directory motori preoccupazioni non si ottiene alcun trattamento speciale, ed è trattata come una normale directory sotto modelli, in modo da i moduli in esso contenuti devono trovarsi nello spazio dei nomi di Concerns e, quando si include un problema, è necessario includerlo anche con il namesapace di Concerns, se ho capito bene. Sono sorpreso che questo non sia menzionato nei documenti.

+4

penso che il modulo dovrebbe essere chiamato Core :: Concerns :: UserHelper, e può rimanere nella directory 'app/models/concerns' –

+0

sembra che questo abbia risolto il problema, un altro problema sollevato ma non penso che sia un altro problema, grazie mille :) –

+0

nessun problema, felice di aiutare :) –

risposta

13

Il problema deve risiedere nell'app/modelli | controller/preoccupazioni/nome_motore/concern_name.rb. Questo caricherà automaticamente la preoccupazione.

Per includere il problema, includere EngineName :: ConcernName.