คอนโซล Ruby on Rails ค้างเมื่อโหลด


146

ไม่ว่าจะด้วยเหตุผลใดก็ตามคอนโซล Ruby on Rails ปฏิเสธที่จะเริ่มต้น มันแค่แฮงค์ ฉันไม่ได้ทำการเปลี่ยนแปลงรหัสของฉันและโครงการอื่น ๆ ที่ใช้ Ruby และ Ruby on Rails รุ่นเดียวกันก็ไม่มีปัญหา ในที่สุดเมื่อฉันCtrl+ Cฉันได้รับการติดตามสแต็กนี้ซึ่งชี้ไปที่สปริง

ฉันไม่สามารถอธิบายได้ว่าทำไมสิ่งนี้จึงเกิดขึ้นจากช่วงเวลาหนึ่งไปอีกช่วงเวลาหนึ่งซึ่งมันทำงานได้ดี ฉันล้างอัญมณีทั้งหมดผ่าน RVM และติดตั้งใหม่ทั้งหมดผ่านคำสั่งชุดรวม แต่ก็ยังไม่มีโชค ความคิดใด ๆ ที่จะได้รับการชื่นชม

นอกจากนี้เซิร์ฟเวอร์ Ruby on Rails ก็ไม่มีปัญหาเท่าที่ฉันสามารถบอกได้ ปัญหาเกี่ยวข้องกับโครงการ แต่ไม่มีการเปลี่ยนแปลงรหัสและเป็นเพียงคอนโซล Ruby on Rails ที่มีปัญหา

Ruby 2.1.2
Rails 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 ไม่มีประโยชน์อะไรเลย ฉันหวังว่านี่คือ

Spring จะเริ่มต้นโดยอัตโนมัติเมื่อคุณเรียกใช้คำสั่งอีกครั้ง


สิ่งนี้ใช้ได้กับฉันด้วย Rails 4.1.1 ฉันต้องอ่านข้อมูลเกี่ยวกับ Spring Gem เพื่อดูว่ามันกำลังทำอะไรอยู่
jetimms

1
@ cee-dub แต่อะไรคือเหตุผลที่อยู่เบื้องหลังทำไมฤดูใบไม้ผลิถึงไม่ยอมให้มันวิ่งบนรางคอนโซล?
kamal

3
สิ่งนี้ไม่ได้ผลสำหรับฉัน ฉันยังคงประสบปัญหาหลังจากหยุดฤดูใบไม้ผลิ
Donato

3
เพิ่งพบปัญหานี้: เมื่อฉันวิ่งbin/spring stopฉันได้รับการตอบสนองSpring is not running.ดังนั้นฉันจึงวิ่งps aux | grep springเห็นกระบวนการสปริง 5 กระบวนการทำงานและฆ่าด้วยตนเองซึ่งแก้ไขปัญหา
เอียนเทย์เลอร์

! ที่น่าตื่นตาตื่นใจ คงไม่มีทางเดาได้เลยว่า
Rambatino

7

เป็นสิ่งที่ผิดกับรุ่น Spring Gem ที่ฉันคาดเดา

ไปที่ Gemfile ของคุณและแสดงความคิดเห็น gem 'spring' จากนั้นเรียกใช้แล้วbundle installลองอีกครั้ง

# gem 'spring'

แล้ว:

bundle install

หากงานของคุณขึ้นอยู่กับอัญมณีลองอัปเดตพลอยโดย:

bundle update

นี้แก้ให้ฉันเกินไปในลินุกซ์มิ้นท์กับราง 4.1.4
slhck

3
bundle updateต้องระวัง หากคุณทำเช่นนั้นคุณก็มีโอกาสที่จะเปลี่ยนเวอร์ชั่นอัญมณีของคุณอย่างสิ้นเชิงในทุกสภาวะแวดล้อม สิ่งนี้สามารถแนะนำผลข้างเคียงมากมายที่คุณไม่ต้องการ นอกจากนี้คุณยังสามารถทำการbundle update springอัปเดตเพียงอัญมณีเดียว
jaydel

@jaydel คุณควรใส่เวอร์ชันของคุณลงใน gemfile ของคุณรวมถึงเวอร์ชั่นพา ธ ด้วย Bundler จะอัปเดตรุ่นรองโดยอัตโนมัติ แต่ไม่ใช่เวอร์ชันหลัก แต่คุณสามารถย้อนกลับไปเป็นเวอร์ชันที่คุณระบุไว้เดิม (ซึ่งคุณรู้ว่าแอปของคุณใช้งานได้) ตลอดเวลา
Ben Aubin

เกี่ยวกับการวางเวอร์ชั่นใน Gemfile ของคุณ - ตกลง ฉันไม่รู้เกี่ยวกับข้อ จำกัด ในการอัปเดตเป็นเวอร์ชันหลัก แต่มันก็สมเหตุสมผลเมื่อฉันคิดผ่าน :) ข้อมูลที่ดีขอบคุณ
jaydel

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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.