Консоль Ruby on Rails висить під час завантаження


146

З будь-якої причини консоль Ruby on Rails відмовляється запускатися; воно просто висить. Я не вносив жодних змін до свого коду, а інші проекти, що використовують ту саму версію Ruby і Ruby on Rails, не мають жодних проблем. Коли я нарешті Ctrl+ Cя отримую цей стек слід, який вказує на Spring.

Я не можу пояснити, чому це відбувається з однієї миті в іншу, де це добре працювало. Я очистив усі дорогоцінні камені через RVM і перевстановив усі за допомогою команди bundle, але все одно не пощастило. Будь-які ідеї будуть вдячні.

Також сервер Ruby on Rails не має жодних проблем, наскільки я можу сказати. Проблема пов'язана з проектом, проте жоден код не змінився, а проблему має лише консоль Ruby on Rails.

Рубіни 2.1.2
Рейки 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$

Відповіді:


415

Перезапуск весни повинен виправити висячі команди:

$ bin/spring stop

Після видалення та відтворення нового додатка Ruby on Rails я випробував підвісні команди (рейка, бін / рейка тощо). Google не був таким корисним. Я сподіваюся, що це так.

Весна почнеться автоматично при повторному запуску команди.


Це працювало для мене з Rails 4.1.1. Мені потрібно почитати про самоцвіт Spring, щоб побачити, що це робить.
Джетим

1
@ cee-dub, але в чому причина цього, чому весна не дає їй працювати консольною рейкою?
камаль

3
Це для мене не вийшло. Я все ще відчуваю проблеми після припинення весни.
Донато

3
щойно я зіткнувся з цим питанням: коли я забіг bin/spring stop, я отримав відповідь. Spring is not running.Отже, я побіг ps aux | grep spring, побачив 5 запущених пружинних процесів і вручну вбив їх, що вирішило проблему.
Ян Тейлор

Дивовижний! Ніколи б не здогадувався про це.
Рамбатіно

7

Я думаю, це щось не так з версією Spring gem.

Перейдіть до свого Gemfile і коментуйте дорогоцінний камінь "весна". Потім запустіть bundle installі спробуйте ще раз.

# gem 'spring'

І потім:

bundle install

Якщо ваша робота залежить від дорогоцінного каміння, спробуйте оновити дорогоцінні камені:

bundle update

Це вирішило це і для мене на Linux Mint з рейками 4.1.4
slhck

3
будьте обережні bundle update. Якщо ви зробите це так, у вас є шанс кардинально змінити версії дорогоцінних каменів у всьому середовищі. Це може спричинити багато побічних ефектів, які ви не хочете. Ви також bundle update springможете оновити лише один дорогоцінний камінь
jaydel

@jaydel Ви завжди повинні розміщувати свої версії у своєму gemfile, включаючи версію шляху. Покупця автоматично оновлює незначні версії, але не основні версії, але ви зможете в будь-який час повернутись до версії, яку ви спочатку вказали (на яку ви знаєте, що працює ваш додаток).
Ben Aubin

щодо розміщення версій у вашому Gemfile - погоджено. Я не знав про обмеження на оновлення до основних версій, але це має сенс, коли я
продумаю

3

Якщо $ bin/spring stopпроблему не вирішити, переконайтеся, що все ще не залишився осірілий весняний процес:

$ ps aux | grep -i spring

Якщо ви бачите щось подібне

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     

потім введіть процедуру пружинної пружини та спробуйте запустити консоль знову:

$ kill -9 16980 
$ rails c

1

Коли ви підозрюєте, що Весна є причиною дивацтва, спробуйте виконати цю команду:

spring stop && spring start
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.