Trong một ứng dụng đường ray tôi đang phát triển (trên OS-X), tôi đang tìm chạy bộ kiểm tra thông qua rspec khóa lên thường xuyên. Nó không xảy ra mọi lúc. Tôi đã thử thêm --format documentation
khi chạy bộ để xem liệu nó có xảy ra ở cùng một nơi mọi lúc và không.Quá trình Rspec treo ở những nơi khác nhau, quá trình không thể bị giết. Cách chẩn đoán?
Tôi đã cố gắng giết quá trình với kill -9
. Sau đó nó đổi tên thành (ruby) với trạng thái quá trình là ?E
. Điều này link cho thấy rằng quá trình này bị chặn đang chờ cuộc gọi hệ thống kết thúc. Tôi phải khởi động lại máy của tôi mỗi khi điều này xảy ra để giết quá trình này.
Tôi đã thử cài đặt lại rvm, ruby, mysql và imagemagick. Dự án này đang sử dụng gem tưởng tượng (thông qua mini_magick), và tôi nghi ngờ rằng nó có thể là một trong những lệnh này đang gây ra rspec để chặn. Tôi đã thử thêm các câu lệnh puts
xung quanh mỗi lệnh mini_magick để đảm bảo chúng hoàn thành việc thực thi và tất cả đều ổn.
Tôi đang tìm kiếm các đề xuất về cách chẩn đoán vấn đề này.
Sử dụng công tắc '-e' để chỉ chạy các thông số kỹ thuật nhất định dựa trên mẫu bạn cung cấp. Chạy 'rspec -h' để biết thêm thông tin. – iain
Sự cố dường như không xảy ra khi chạy các thông số kỹ thuật riêng lẻ hoặc một tập nhỏ các thông số kỹ thuật (tệp đơn), mà là khi chạy toàn bộ bộ thử nghiệm. Tôi đang tìm một cách để gỡ lỗi những gì quá trình bị chặn trên? – MAckerman
Tôi nghĩ rằng bạn sẽ cần phải đăng ít nhất một số thông số kỹ thuật của bạn, ít nhất sau đó nó có thể để có được một ý tưởng về những gì họ đang cố gắng để làm. Ngoài ra, hãy kiểm tra xem thông số kỹ thuật của bạn có đang chạy không theo thứ tự ngẫu nhiên hay không. Nếu bạn đã sử dụng RSpec để tạo tệp spec_helper thì nó sẽ thêm thứ tự ngẫu nhiên làm mặc định. – iain