2014-04-19 15 views
26

Sto configurando la mia prima app Rails 4.1, che include Spring, il loro nuovo preloader. Quando provo a installare Devise usando il loro generatore ($ rails generate devise:install), la riga di comando si blocca e non viene generato nulla.Rails Generatori di rottura molla

Se rimuovo Spring dal file gem e riprovo, il generatore di Devise funziona.

Qualcuno ha qualche idea?

risposta

31

Controllare le directory di alcuni altri progetti su cui si stava lavorando in quel momento, è probabile che i file generati siano finiti lì.

primavera sembra confondersi quando si lavora con più di una app di rotaia alla volta. Questo probabilmente ha causato il tuo problema

Spring esegue come server e mantiene un ambiente di binari caricato. Penso che quello che succede sia che se lavori con più di un progetto alla volta, il sistema Spring sembra confondersi e usa un ambiente sbagliato.

Ho avuto una situazione in cui stavo correndo rails g ... in un progetto e i file venivano generati in un altro progetto. Quello che era pazzesco era che continuavo a rinominare e spostare quell'altra cartella, e il generatore continuava a mettere i file in quella cartella. Come se la molla si fosse agganciata sull'inode di quella cartella.

Prova DISABLE_SPRING=1 rails g devise:install

o ps aux |grep spring e uccidere tutti i processi che si vedono e quindi eseguire rails g devise:install

Stiamo prendendo la molla dalla Gemfile per ora, mentre questo comportamento rotto persiste e nell'uso futuro rails new --skip-spring

Se si desidera continuare a utilizzare la primavera, quindi provare a seguire queste regole

  • Utilizzare i nuovi gusci per ogni nuovo progetto
  • Utilizzare un nuovo nome di directory per ogni nuovo progetto (se lo fai rails new blog, lavorare su di essa, quindi mv blog blog.old e rails new blog ancora una volta, non potrebbe funzionare.
  • Di tanto in tanto continua ad uccidere tutti i server primaverili, per amor di sicurezza (e sanità).
+3

ho avuto un solo progetto, ma ancora il generatore rotaie ha richiesto molto tempo lungo - la rimozione di primavera da Gemfile riparato. Quindi, la primavera è il problema, ma non necessariamente a causa di più progetti – Anand

+2

Infatti Spring è definitivamente rotto. Modo di andare squadra Rails e aggiungere una gemma rotta per impostazione predefinita. – kakubei

+0

Invece di uccidere i processi, 'spring stop' dovrebbe essere sufficiente. –

7

È possibile disabilitare la molla per qualsiasi comando $ rails passando la variabile di ambiente DISABLE_SPRING=1.

$ DISABLE_SPRING=1 rails generate devise:install 

In alternativa, si può provare $ spring stop a girare verso il basso i processi di primavera. L'esecuzione di $ rails generate in seguito produrrà un nuovo processo a molla, che potrebbe risolvere il problema temporaneo.

+0

'DISABLE_SPRING = 1' impedirà ai binari di dirigere i comandi attraverso Spring, ma il server Spring viene comunque eseguito in background. Questo potrebbe o potrebbe non essere un problema per l'OP. L'esecuzione di 'spring stop' dal prompt dei comandi * fa * ferma il server Spring (almeno in Rails 4.2.0), e commentandolo dal Gemfile impedisce di ricominciare. (A meno che non si lavori su un altro progetto che ha ancora abilitato.) –

1

Questo è un vecchio post, ma penso che la mia esperienza possa aiutare qualcuno ...

rotaie 5.0.1

stavo affrontando lo stesso problema dopo ho messo un po 'di concepire file generati (io sono nuovo rotaie e apprendimento) e di quanto ho provato i binari distruggono il modello di devise e sono rimasto bloccato, ho provato molte volte e niente ha funzionato.

Cercate su Google, vieni qui, provato a escludere le gemme primaverili, e ha funzionato, di nuovo aggiunto le gemme primaverili, e l'idea è stata di nuovo bloccata su tutto.

Ho appena chiuso il terminale e ne ho aperto uno nuovo, e ha funzionato.

1

C'è stesso problema su rotaie 5.1.4 per responder gemma

ho elencato soluzioni insieme a quelli precedenti:

  • chiudere il morsetto e aprire un nuovo comando
  • gestito con
    DISABLE_SPRING=1 bundle exec rails generate responders:install
    o esportarlo come variabile di ambiente
    export DISABLE_SPRING=1
  • uccidere esecuzione processo di primavera per la vostra applicazione
    ps ax | grep spring | grep YOUR_APP_NAME | cut -f1 -d' ' | xargs kill