2016-02-04 24 views
22

Tôi có ứng dụng đường ray chạy trong vùng chứa docker trong môi trường phát triển.Làm thế nào để gỡ lỗi một ứng dụng đường ray trong docker với pry?

Khi tôi cố gắng gỡ lỗi bằng cách đặt binding.pry ở đâu đó trong mã và đính kèm vào vùng chứa, tôi có thể thấy lời nhắc pry ở đầu ra nhưng không dừng lại và tôi không thể tương tác với nó giống như mà không có docker container.

Vậy làm cách nào để gỡ lỗi ứng dụng được xếp hạng?

Trả lời

35

Nếu bạn đang sử dụng Docker-soạn, bạn có thể thêm các cờ này vào docker-compose.yml:

app: 
    tty: true 
    stdin_open: true 

Và sau đó đính kèm quy trình của bạn với docker attach. pry-rails hoạt động ở đây ngay bây giờ. Đảm bảo less được cài đặt trên vùng chứa của bạn để có trải nghiệm nâng cao tối ưu.

cf. https://github.com/docker/compose/issues/423#issuecomment-141995398

5

Tôi gặp vấn đề tương tự khi tôi chạy nâng lên trong Hành khách. Hãy thử thay đổi "pry-rails" trong Gemfile thành gem "pry-remote", sẽ bắt đầu giao thức dRuby hoặc phân phối không phụ thuộc.

Trong trường hợp bạn muốn ngăn chặn các mã trong thực hiện cuộc gọi "binding.remote_pry" như trái ngược với "binding.pry"

Sau đó, chỉ cần gọi remote-pry trong giao diện điều khiển để truy cập nó. Nó sẽ hoạt động tương tự. Trong môi trường thử nghiệm của bạn, chỉ cần binding.pry hoạt động bình thường.

11

sử dụng thóc mách bạn phải chạy một cách khác:

docker-compose run --service-ports web

kiểm tra bài viết này để biết thêm:

http://blog.carbonfive.com/2015/03/17/docker-rails-docker-compose-together-in-your-development-workflow/

+0

Trong khi liên kết này có thể trả lời câu hỏi, nó là tốt hơn để bao gồm các thành phần cốt lõi của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở thành không hợp lệ nếu trang được liên kết thay đổi. –

+0

Giải pháp này không phù hợp với tôi vì các dịch vụ khác của tôi phụ thuộc vào việc được liên kết với đúng phiên bản dịch vụ này mà tôi muốn gỡ lỗi. –

0

Nếu bạn không sử dụng docker-compose, bạn có thể chỉ cần chạy vùng chứa với tùy chọn -it.

Ví dụ:

docker run -v /Users/adam/Documents/Rails/Blog/:/usr/src/app -p 3000:3000 -it blog 
Các vấn đề liên quan