2013-05-24 39 views
7

Ngay bây giờ, khi tôi muốn một breakpoint trong vim hoặc Text Sublime, tôi thả một dòng như sau vào mã:vim-ruby-debugger phong cách breakpoint với Pry trong Vim

binding.pry if Rails.env.test? 

Pry (và nó associated plugins) cung cấp một môi trường tốt đẹp để thực hiện gỡ lỗi Ruby tương tác từ dòng lệnh.

Tuy nhiên, việc thêm mã thực tế vào dự án của tôi để tạo mỗi điểm ngắt (và nhớ xóa mã như vậy khi tôi thực hiện cam kết) có thể cồng kềnh.

Tôi thích những gì vim-ruby-debugger thực hiện trong việc giảm điểm ngắt hình ảnh vào trình chỉnh sửa mà không thực sự sửa đổi mã nguồn của dự án, nhưng tôi đã gặp một số sự cố khi thực hiện chức năng này thích sử dụng Pry 'breakpoints' ngay từ đầu).

Vậy câu hỏi là, là nó có thể thả một binding.prytham khảo vào một tập tin như vậy mà một trình soạn thảo như Vim (hoặc Text Sublime, vv) sẽ nhặt nó lên và đáp ứng một cách thích hợp tại debug thời gian mà không có dòng thực sự được bao gồm trong mã nguồn?

+0

bạn phải viết kịch bản để nói chuyện giữa pry & vim. Sử dụng vim --remote-expr bạn có thể đạt được như vậy. –

+0

bạn có muốn các điểm ngắt kiểu trình gỡ rối - với điều hướng và tất cả? (Tôi đoán bạn làm) hoặc bạn thực sự chỉ muốn thả một pry trong đó? – prater

Trả lời

0

http://www.vim.org/scripts/script.php?script_id=4451 dường như giải quyết những gì bạn muốn. Tôi đã không thử nó cá nhân, nhưng tôi sẽ :).

+0

Tôi biết về ruby_pry.vim, nhưng tôi chưa thấy bằng chứng rằng nó có thể làm những gì tôi mô tả ở trên. – user456584

0

Trước hết, PRY là một công cụ tuyệt vời và tôi rất vui khi bạn tìm thấy nó.

có thể thả tham chiếu binding.pry vào tệp ... mà không có dòng thực sự> được bao gồm trong mã nguồn không?

Bạn cần phải thả binding.pry trực tiếp vào mã nguồn để mã này chuyển thành kiểm tra và phát xung quanh. FYI nếu bạn thả một binding.pry vào tập tin spec của bạn, nó sẽ mở pry IN file spec chứ không phải cái mà nó đề cập đến.

Bạn có thể thử better_erros với binding_of_caller và khi bạn chạy máy chủ lỗi đường ray, a) nó mang đến cho bạn cảm giác lỗi tốt hơn và cung cấp cho bạn hộp trực tiếp nâng lên lỗi.

0

Tôi không sử dụng nâng lên khi gỡ lỗi, tôi chỉ sử dụng trình sửa lỗi thông thường nếu tôi phải. Tuy nhiên, đây là quy trình làm việc vim của tôi.

  1. Tôi có vim vĩ mô lưu "@d" đó chèn đoạn mã sau dưới bất cứ dòng Tôi đang ở require 'gỡ rối'; debugger; 0 này làm cho nó rất dễ dàng để chèn.

  2. Để tránh cam kết dòng debugger, tôi đã thiết lập một cái móc git (pre-cam) để kiểm tra nếu các cam kết bao gồm những dòng này (grep)

http://mark-story.com/posts/view/using-git-commit-hooks-to-prevent-stupid-mistakes

3

Bạn có thể sử dụng một Git Hooks để ngăn chặn một cam kết xấu, như để lại một số binding.pry trong mã của bạn.

Bài viết này giải thích làm thế nào để làm điều đó http://www.launchacademy.com/blog/posts/automatically-prevent-some-bad-git-commits

Ở đây bạn cũng là một bài tốt về nó http://www.ryanmcg.com/2013/8/12/another-forgotten-binding-pry/

Ngoài ra tôi hoàn toàn đồng ý rằng PRY là một Gem đặc biệt.