La console di Ruby on Rails è bloccata durante il caricamento


146

Per qualsiasi motivo, la console di Ruby on Rails si rifiuta di avviarsi; si blocca e basta. Non ho apportato modifiche al mio codice e altri progetti che utilizzano la stessa versione di Ruby e Ruby on Rails non hanno alcun problema. Quando finalmente Ctrl+ Cottengo questa traccia dello stack, che punta a Spring.

Non riesco a spiegare perché questo accada da un momento all'altro, dove funzionava bene. Ho eliminato tutte le gemme tramite RVM e reinstallato tramite il comando bundle, ma non ho ancora avuto fortuna. Qualsiasi idea sarebbe apprezzata.

Anche il server Ruby on Rails non ha alcun problema per quanto ne so. Il problema è legato al progetto, tuttavia non è stato modificato alcun codice ed è solo la console Ruby on Rails che presenta il problema.

Ruby 2.1.2
Rotaie 4.1.4

user_a@ubuntu:~/work/app_a$ rails console
^C/home/user_a/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/run.rb:54:in `gets': Interrupt
    from /home/user_a/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/run.rb:54:in `verify_server_version'
    from /home/user_a/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/run.rb:25:in `call'
    from /home/user_a/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/command.rb:7:in `call'
    from /home/user_a/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/rails.rb:23:in `call'
    from /home/user_a/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/command.rb:7:in `call'
    from /home/user_a/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client.rb:26:in `run'
    from /home/user_a/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/bin/spring:48:in `<top (required)>'
    from /home/user_a/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/binstub.rb:11:in `load'
    from /home/user_a/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/binstub.rb:11:in `<top (required)>'
    from /home/user_a/work/app_a/bin/spring:16:in `require'
    from /home/user_a/work/app_a/bin/spring:16:in `<top (required)>'
    from bin/rails:3:in `load'
    from bin/rails:3:in `<main>'

user_a@ubuntu:~/work/app_a$

Risposte:


415

Il riavvio di Spring dovrebbe correggere i comandi di sospensione:

$ bin/spring stop

Ho sperimentato comandi sospesi (rake, bin / rails, ecc.) Dopo aver eliminato e ricreato una nuova applicazione Ruby on Rails. Google non è stato molto utile. Spero che sia così.

La primavera inizierà automaticamente quando si eseguirà nuovamente il comando.


Questo ha funzionato per me con Rails 4.1.1. Devo leggere la gemma di primavera per vedere cosa sta facendo.
Jetimms,

1
@ cee-dub, ma qual è la ragione dietro, perché la primavera non gli consente di eseguire la console di rotaie?
Kamal,

3
Questo non ha funzionato per me. Riscontro ancora problemi dopo aver fermato la primavera.
Donato,

3
ho appena riscontrato questo problema: quando ho eseguito bin/spring stop, ho ricevuto la risposta Spring is not running.Quindi, ho eseguito ps aux | grep spring, ho visto 5 processi a molla in esecuzione e li ho uccisi manualmente, il che ha risolto il problema.
Ian Taylor,

Sorprendente! Non l'avrei mai immaginato.
Rambatino,

7

Immagino sia qualcosa di sbagliato nella versione gemma di Spring.

Vai al tuo Gemfile e commenta la gemma "primavera". Quindi corri bundle installe riprova.

# gem 'spring'

E poi:

bundle install

Se il tuo lavoro dipende dalla gemma, prova ad aggiornare le gemme:

bundle update

Questo è stato risolto anche per me su Linux Mint con le rotaie 4.1.4
slhck

3
diffidare di bundle update. Se lo fai in questo modo hai la possibilità di cambiare radicalmente le tue versioni gemma in tutto l'ambiente. Questo può introdurre molti effetti collaterali che non vuoi. Puoi anche fare bundle update springper aggiornare solo un gioiello
jaydel,

@jaydel Dovresti sempre mettere le tue versioni nel tuo file di gemme, inclusa la versione del percorso. Bundler aggiorna automaticamente le versioni secondarie ma non le versioni principali, ma puoi tornare alla versione specificata in origine (in cui sai che la tua app funziona) in qualsiasi momento.
Ben Aubin,

riguardo a mettere le versioni nel tuo Gemfile - concordato. Non sapevo delle restrizioni sull'aggiornamento alle versioni principali, ma ha senso quando ci penso :) Buone informazioni, grazie
jaydel,

3

Se $ bin/spring stopil problema persiste, verifica che non sia ancora presente un processo orfano di Spring in giro:

$ ps aux | grep -i spring

Se vedi qualcosa del genere

user  7163  0.0  0.0 110356  2165 pts/3    S+   19:40   0:00 grep --color=auto -i spring
user 16980  0.0  0.4 398826 17580 ?        Sl   Aug31   0:00 spring server | current | started 277 hours ago     

quindi interrompere il processo a molla errato e provare a riavviare la console:

$ kill -9 16980 
$ rails c

1

Quando si sospetta che Spring sia la causa della stranezza, provare a eseguire questo comando:

spring stop && spring start
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.