Konsol Ruby on Rails sedang menggantung saat memuat

146

Untuk alasan apa pun, konsol Ruby on Rails menolak untuk memulai; itu hanya hang. Saya belum membuat perubahan pada kode saya, dan proyek-proyek lain menggunakan versi yang sama dari Ruby dan Ruby on Rails tidak memiliki masalah. Ketika saya akhirnya Ctrl+ Csaya mendapatkan jejak tumpukan ini, yang menunjuk ke Spring.

Saya tidak bisa menjelaskan mengapa ini terjadi dari satu saat ke saat berikutnya, di mana ia bekerja dengan baik Saya telah membersihkan semua permata melalui RVM dan menginstal ulang semua melalui perintah bundel, tetapi masih belum berhasil. Setiap ide akan dihargai.

Juga server Ruby on Rails tidak memiliki masalah sejauh yang saya tahu. Masalahnya terkait proyek, namun tidak ada kode yang berubah, dan hanya konsol Ruby on Rails yang memiliki masalah.

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$
theog
sumber

Jawaban:

415

Restart Spring harus memperbaiki perintah menggantung:

$ bin/spring stop

Saya mengalami perintah gantung (rake, bin / rails, dll.) Setelah menghapus dan membuat ulang aplikasi Ruby on Rails baru. Google tidak terlalu membantu. Saya harap ini.

Spring akan mulai secara otomatis ketika Anda menjalankan kembali perintah Anda.

cee-dub
sumber
Ini bekerja untuk saya dengan Rails 4.1.1. Saya perlu membaca tentang permata Spring untuk melihat apa yang dilakukannya.
jetimms
1
@ cee-dub tapi apa alasan di baliknya, mengapa pegas tidak membiarkannya menjalankan konsol rel?
kamal
3
Ini tidak berhasil untuk saya. Saya masih mengalami masalah setelah berhenti musim semi.
Donato
3
hanya berlari ke masalah ini: ketika saya berlari bin/spring stop, saya menerima tanggapan Spring is not running.Jadi, saya berlari ps aux | grep spring, melihat 5 proses pegas berjalan, dan secara manual membunuh mereka, yang memperbaiki masalah.
Ian Taylor
Luar biasa! Tidak akan pernah menduga itu.
Rambatino
7

Itu sesuatu yang salah dengan versi permata Musim Semi kurasa.

Pergi ke Gemfile Anda dan komentar permata 'musim semi'. Kemudian jalankan bundle installdan coba lagi.

# gem 'spring'

Lalu:

bundle install

Jika pekerjaan Anda bergantung pada permata, coba perbarui permata dengan:

bundle update
Eki Eqbal
sumber
Ini menyelesaikannya untuk saya juga di Linux Mint dengan rel 4.1.4
slhck
3
waspada terhadap bundle update. Jika Anda melakukannya dengan cara itu, Anda memiliki kesempatan untuk secara radikal mengubah versi permata Anda di seluruh lingkungan. Ini dapat menimbulkan banyak efek samping yang tidak Anda inginkan. Anda juga bundle update springdapat memperbarui satu permata saja
jaydel
@ jaydel Anda harus selalu meletakkan versi di gemfile Anda, termasuk versi path. Bundler akan secara otomatis memperbarui versi minor tetapi bukan versi utama, tetapi Anda dapat memutar kembali ke versi yang Anda tentukan sebelumnya (yang Anda tahu aplikasi Anda berfungsi) kapan saja.
Ben Aubin
tentang menempatkan versi di Gemfile Anda - disetujui. Saya tidak tahu tentang pembatasan memperbarui ke versi utama tetapi masuk akal ketika saya memikirkannya :) Informasi yang baik, terima kasih
jaydel
3

Jika $ bin/spring stoptidak menyelesaikan masalah, maka periksa untuk memastikan tidak ada proses Spring yatim yang masih berkeliaran:

$ ps aux | grep -i spring

Jika Anda melihat sesuatu seperti

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     

kemudian bunuh proses musim semi yang salah dan coba untuk memulai konsol lagi:

$ kill -9 16980 
$ rails c
hutan kecil
sumber
1

Ketika diduga bahwa Spring adalah penyebab keanehan, coba jalankan perintah ini:

spring stop && spring start
Yurii Halapup
sumber