Bagaimana Anda menjalankan pry dari emacs


9

Saat menulis kode RoR, saya sering harus menjalankan drop ke dalam sesi pembongkaran atau debugger. Jadi saya menempatkan binding.prybaris saya di kode implementasi dan menjalankan spec saya. Itu berfungsi dengan baik jika saya menjalankan spesifikasi di terminal tetapi dari dalam Emacs, saya mendapatkan output yang berantakan dan sangat sulit untuk menggunakan debugger / pry.

Bagaimana kabar kalian?

masukkan deskripsi gambar di sini

Jawaban:


10

rspec-modebaru-baru ini menambahkan bagian dalam README tentang hal ini. Ia mengatakan:

Instal inf-rubydan tambahkan ini ke file init Anda:

(add-hook 'after-init-hook 'inf-ruby-switch-setup)

Ketika Anda telah mencapai breakpoint, tekan C-x C-quntuk mengaktifkan inf-ruby.


1
Yang tidak bekerja tetapi sayangnya itu memiliki mereka kode warna aneh karakter seperti ^[[0G, ^[[1A. Bisakah saya menyingkirkan itu?
chalmagean

Untuk salah satu kode pelarian, lihat instruksi di bagian bawah: github.com/nonsequitur/inf-ruby#bugs . Jika kode warna juga menimbulkan masalah (pada sistem saya, mereka tidak), tambahkan Pry.config.color = falsedengan cara yang sama seperti perbaikan yang disarankan di sana.
Dmitry

6

Saya menemukan bahwa pry-remote adalah cara terbaik untuk menjalankan pry di dalam Emacs, sejak itu pry mendapatkan buffer khusus dan dapat melampirkan ke proses ruby ​​dari mana saja (termasuk terminal non-Emacs atau hal-hal seperti pow ). Saya menggunakan sesuatu seperti ini:

(defun my-run-remote-pry (&rest args)
  (interactive)
  (let ((buffer (apply 'make-comint "pry-remote" "pry-remote" nil args)))
    (switch-to-buffer buffer)
    (setq-local comint-process-echoes t)))

(define-key ruby-mode-map (kbd "C-c r d") 'my-run-remote-pry) ; (or whatever keybinding)

Kemudian, Anda akan memasukkan binding.remote_prykode Anda; Anda melampirkan menunggu prydengan C-c r d(atau apa pun) dan keluar membongkar (melanjutkan proses) dengan C-c C-d.

Anda juga mungkin ingin menonaktifkan halaman di halaman Anda ~/.pryrc, karena itu tidak cocok dengan comint:

Pry.config.pager = false
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.