2014-07-10 12 views
9


Ho rifattorizzato i miei controller introducendo i modelli di richiesta e risposta per fare parte della logica che si aggirava attorno ai controller seguendo questo presentation. Ho completato tutte le risposte e richiesto i modelli con un modulo Risposte e richieste rispettivamente. Le applicazioni funzionano perfettamente ma quando eseguo i test, visualizzo l'errore qui sotto.RuntimeError: Rilevata dipendenza circolare durante la costante di caricamento automatico

Failure/Error: Unable to find matching line from backtrace 
RuntimeError: 
Circular dependency detected while autoloading constant Responses::FolderContentResponse 

La mia struttura di directory è la seguente:
  - APP/
    - modelli/
        - risposte/

Nota: Ho visto le domande legati a questo problema, ma i loro problemi non sembravano simili ai miei. Nel mio caso succede casualmente, e solo quando si eseguono i test (RAILS TEST ENV), l'applicazione funziona perfettamente.

module Responses 
    class ContentResponse 
    include ActiveAttr::Model 
    #some attributes 
    #some methods 
    end 
end 

module Responses 
class FolderContentResponse < ContentResponse 
end 
end 

La classe risposta FolderContent eredita da ContentResponse che ha metodi più generici FolderContent altre risposte di contenuto utilizzano.

+0

Potete fornire un esempio minimo (ad esempio, il file folder_content_response.rb, con tutto ciò che non incide l'errore rimosso)? –

+0

@Fredrich folder_content_response.rb è solo una vecchia classe di rubini Con un paio di metodi. Non penso che l'implementazione in questa classe abbia nulla a che vedere con il suo non essere caricato automaticamente. Ancora di più solo durante l'esecuzione di test. Ho modificato la domanda con un po 'di codice della classe –

+0

Howabout content_response.rb? c'è qualche codice non nelle definizioni dei metodi (cioè che viene eseguito quando la classe è caricata)? –

risposta

13

Sembra molto simile a uno issue trovato di recente da Xavier Noria. In poche parole, capybara avvia l'applicazione in modalità multithread per il test anche se l'impostazione per caricare tutto il codice dell'app in anticipo non è attivata (necessario perché require e gli amici non sono protetti da thread)

È stato corretto per le guide 4.2, in precedenza versioni

config.allow_concurrency = false 

in test.rb dovrebbe fare il trucco

Problemi correlati