Làm thế nào để tải lại các mô-đun raku khi chạy, cho mục đích gỡ lỗi?


8

Tôi đang tải các mô-đun một cách linh hoạt trên ứng dụng API / phần còn lại của raku.

Tôi muốn tránh máy chủ khởi động lại mỗi lần tôi thực hiện bất kỳ sửa đổi nào đối với các mô-đun của mình.

Có cách nào để tải lại các mô-đun raku mỗi khi bạn gọi yêu cầu không?

try require ::('Foo');

Câu trả lời:


6

Cro làm điều này . Bạn có thể xây dựng máy chủ của mình trên đỉnh Cro, đó là những gì tôi muốn giới thiệu. Ngoài ra, bạn có thể nghiên cứu mã Cro để tìm hiểu cách xử lý khởi động lại tự động. Cro :: Tools :: Runner sẽ là một methinks điểm khởi đầu tốt.


4

Bạn phải tính đến việc tất cả các mô-đun được biên dịch trước khi được tải. Những gì bạn đang tải không phải là nguồn, mà là CompUnit đã được tạo từ nó, theo mặc định trong một .precompthư mục. Ví dụ, quá trình biên dịch này cũng quan tâm đến các phiên bản, nhưng điều chính là nó là mã byte chứ không phải nguồn.

Không có cách giải quyết nào dễ dàng, ngoài việc nắm trong tay máy móc đó (nghĩa là kiểm tra xem có thay đổi nào trong nguồn không, biên dịch trước, tải các nhị phân được biên dịch sẵn ở bất cứ đâu và chạy chúng), vì vậy tôi nghĩ rằng, trong này trường hợp này, tốt hơn là tự hỏi nếu thực sự có một trường hợp sử dụng cho việc này; có lẽ những gì bạn cần làm là tăng tốc độ khởi động lại máy chủ bằng cách nào đó, có thể thông qua tự động hóa bằng sake hoặc chạy thử nghiệm tích hợp từ hook git mà không cần phải khởi động lại máy chủ


3

Bạn không thể tải lại một mô-đun trong một quy trình. Khi một danh tính mô-đun được tra cứu, nó được lưu vào bộ nhớ cache và tìm kiếm danh tính đó lần thứ hai sẽ tiếp tục sử dụng CompUnit phù hợp với lần đầu tiên. Tiền biên dịch không có liên quan đến điều này.

Xem:

https://github.com/rakudo/rakudo/blob/0b8ede6c459be752adef9cbbf7b59c961d9df0b0/src/core.c/CompUnit/Repousing/Installation.pm6#L445-L453

https://github.com/rakudo/rakudo/blob/0b8ede6c459be752adef9cbbf7b59c961d9df0b0/src/core.c/CompUnit/Repousing/FileSystem.pm6#L13-L21

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.