La consola de Ruby on Rails se cuelga al cargar

146

Por alguna razón, la consola de Ruby on Rails se niega a iniciarse; Simplemente se cuelga. No he realizado ningún cambio en mi código, y otros proyectos que usan la misma versión de Ruby y Ruby on Rails no tienen ningún problema. Cuando finalmente Ctrl+ Cobtengo este rastro de pila, que apunta a Spring.

No puedo explicar por qué sucede esto de un momento a otro, donde funcionaba bien. He limpiado todas las gemas a través de RVM y reinstalado todo a través del comando de paquete, pero todavía no tuve suerte. Cualquier idea sería apreciada.

Además, el servidor de Ruby on Rails no tiene ningún problema, por lo que puedo decir. El problema está relacionado con el proyecto, sin embargo, ningún código ha cambiado, y solo la consola de Ruby on Rails tiene el problema.

Ruby 2.1.2
Rieles 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$
Theog
fuente

Respuestas:

415

Reiniciar Spring debería arreglar los comandos colgantes:

$ bin/spring stop

Experimenté comandos colgantes (rastrillo, bin / rails, etc.) después de eliminar y recrear una nueva aplicación Ruby on Rails. Google no fue tan útil. Espero que sea así.

Spring se iniciará automáticamente cuando vuelva a ejecutar su comando.

cee-dub
fuente
Esto funcionó para mí con Rails 4.1.1. Necesito leer sobre la gema de primavera para ver qué está haciendo.
jetimms
1
@ cee-dub, pero ¿cuál es la razón detrás de esto, por qué la primavera no está dejando correr la consola de rieles?
kamal
3
Esto no funcionó para mí. Todavía tengo problemas después de detener la primavera.
Donato
3
acabo de encontrarme con este problema: cuando corrí bin/spring stop, recibí la respuesta Spring is not running.Entonces, corrí ps aux | grep spring, vi que se ejecutaban 5 procesos de primavera y los eliminé manualmente, lo que solucionó el problema.
Ian Taylor
¡Asombroso! Nunca lo habría adivinado.
Rambatino
7

Es algo malo con la versión de gemas de primavera, supongo.

Ir a su Gemfile y comentar gema 'primavera'. Luego corre bundle installe intenta nuevamente.

# gem 'spring'

Y entonces:

bundle install

Si su trabajo depende de la gema, intente actualizar las gemas de la siguiente manera:

bundle update
Eki Eqbal
fuente
Esto también lo resolvió para mí en Linux Mint con rails 4.1.4
slhck
3
tener cuidado de bundle update. Si lo hace de esa manera, tiene la oportunidad de cambiar radicalmente sus versiones de gemas en todo el entorno. Esto puede introducir muchos efectos secundarios que no desea. También puedes hacer bundle update springpara actualizar solo una gema
jaydel
@jaydel Siempre debe poner sus versiones en su archivo de gemas, incluida la versión de ruta. Bundler actualizará automáticamente las versiones menores pero no las principales, pero puede volver a la versión que especificó originalmente (en la que sabe que su aplicación funciona) en cualquier momento.
Ben Aubin
sobre poner versiones en su Gemfile - de acuerdo. No sabía acerca de la restricción de actualizar a las versiones principales, pero tiene sentido cuando lo pienso :) Buena información, gracias
jaydel
3

Si $ bin/spring stopno resuelve el problema, verifique para asegurarse de que todavía no haya un proceso de Spring huérfano:

$ ps aux | grep -i spring

Si ves algo como

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     

luego elimine el proceso de primavera errante e intente iniciar la consola nuevamente:

$ kill -9 16980 
$ rails c
bosque pequeño
fuente
1

Cuando se sospeche que Spring es la causa de la rareza, intente ejecutar este comando:

spring stop && spring start
Yurii Halapup
fuente