Bảng điều khiển Ruby on Rails bị treo khi tải


146

Vì lý do nào, bảng điều khiển Ruby on Rails từ chối khởi động; nó chỉ bị treo Tôi chưa thực hiện bất kỳ thay đổi nào đối với mã của mình và các dự án khác sử dụng cùng phiên bản Ruby và Ruby on Rails không có vấn đề gì. Khi tôi cuối cùng Ctrl+ Ctôi nhận được dấu vết ngăn xếp này, trỏ đến Spring.

Tôi không thể giải thích tại sao điều này xảy ra từ khoảnh khắc này sang khoảnh khắc tiếp theo, nơi nó đang hoạt động tốt. Tôi đã xóa tất cả các viên đá quý thông qua RVM và cài đặt lại tất cả thông qua lệnh bó, nhưng vẫn không gặp may. Có những câu chuyện mới trên trang chủ.

Ngoài ra, máy chủ Ruby on Rails không có vấn đề gì xa như tôi có thể nói. Vấn đề liên quan đến dự án, tuy nhiên không có mã nào thay đổi và chỉ có bảng điều khiển Ruby on Rails có vấn đề.

Ruby 2.1.2 Đường
ray 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$

Câu trả lời:


415

Khởi động lại Spring nên sửa các lệnh treo:

$ bin/spring stop

Tôi đã trải nghiệm các lệnh treo (cào, bin / rails, v.v.) sau khi xóa và tạo lại ứng dụng Ruby on Rails mới. Google không hữu ích. Tôi hy vọng điều này là.

Mùa xuân sẽ tự động bắt đầu khi bạn chạy lại lệnh của mình.


Điều này làm việc cho tôi với Rails 4.1.1. Tôi cần đọc lên viên ngọc mùa xuân để xem nó đang làm gì.
jetimms

1
@ cee-dub nhưng lý do đằng sau nó là gì, tại sao mùa xuân không cho phép nó chạy rails console?
kamal

3
Điều này đã không làm việc cho tôi. Tôi vẫn đang gặp vấn đề sau khi ngừng mùa xuân.
Donato

3
Chỉ gặp phải vấn đề này: khi tôi chạy bin/spring stop, tôi đã nhận được phản hồi Spring is not running.Vì vậy, tôi đã chạy ps aux | grep spring, thấy 5 quá trình mùa xuân đang chạy và tự tay giết chúng, điều đó đã khắc phục vấn đề.
Ian Taylor

Kinh ngạc! Sẽ không bao giờ đoán được điều đó.
Rambatino

7

Tôi đoán đó là một cái gì đó sai với phiên bản đá quý mùa xuân.

Chuyển đến Gemfile của bạn và nhận xét đá quý 'mùa xuân'. Sau đó chạy bundle installvà thử lại.

# gem 'spring'

Và sau đó:

bundle install

Nếu công việc của bạn phụ thuộc vào đá quý, hãy thử cập nhật đá quý bằng cách:

bundle update

Điều này cũng đã giải quyết nó cho tôi trên Linux Mint với đường ray 4.1.4
slhck

3
cảnh giác với bundle update. Nếu bạn làm theo cách đó, bạn có cơ hội thay đổi hoàn toàn các phiên bản đá quý của mình trên toàn bộ môi trường. Điều này có thể giới thiệu rất nhiều tác dụng phụ bạn không muốn. Bạn cũng có thể làm bundle update springđể cập nhật chỉ một viên ngọc
jaydel

@jaydel Bạn phải luôn đặt các phiên bản của mình trong gemfile, bao gồm cả phiên bản đường dẫn. Bundler sẽ tự động cập nhật các phiên bản nhỏ nhưng không phải phiên bản chính, nhưng bạn có thể quay lại phiên bản bạn đã chỉ định ban đầu (mà bạn biết ứng dụng của mình hoạt động) bất cứ lúc nào.
Ben Aubin

liên quan đến việc đưa các phiên bản vào Gemfile của bạn - đã đồng ý. Tôi không biết về việc hạn chế cập nhật lên các phiên bản chính nhưng thật có ý nghĩa khi tôi nghĩ thông qua :) Thông tin tốt, cảm ơn
jaydel

3

Nếu $ bin/spring stopkhông giải quyết được vấn đề, thì hãy kiểm tra để đảm bảo rằng không có quá trình Mùa xuân mồ côi vẫn còn tồn tại:

$ ps aux | grep -i spring

Nếu bạn thấy một cái gì đó như

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     

sau đó giết quá trình mùa xuân sai lầm và cố gắng khởi động lại bàn điều khiển:

$ kill -9 16980 
$ rails c

1

Khi nghi ngờ rằng Spring là nguyên nhân của sự kỳ lạ, hãy thử chạy lệnh này:

spring stop && spring start
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.