Tuy nhiên điều này đặt ra một số câu hỏi như chạy thử nghiệm như thế nào mà không tải Rails và mã liên quan đến ứng dụng?
Thử nghiệm tải mã cần thiết khi có nhu cầu sử dụng. Vì vậy, ví dụ trên một số dòng mã thử nghiệm muốn sử dụng lớp Active::Record
. Với eager_load
được đặt thành false
lớp này không bắt buộc, điều này sẽ dẫn đến ngoại lệ đối với chương trình ruby ruby. Tuy nhiên, trong dự án đường ray, thử nghiệm sẽ yêu cầu Active::Record
theo yêu cầu khi sử dụng nó. Vì vậy, vào cuối một thử nghiệm chạy nhanh hơn, bởi vì chỉ có các phần mã cần thiết đã được yêu cầu.
Kỹ thuật này là trái ngược với eager_loading
và nó được gọi là autoloading
gì là Rails và ứng dụng mã đang được háo hức được nạp liên quan?
Kiểm tra https://github.com/rails/rails. Đó là một nhóm nhân viên.
Tất cả các lớp này và các lớp con của chúng có được tải nhanh không?
có
những nhược điểm rõ ràng của việc sử dụng eager_load = false trong phát triển hoặc thử nghiệm môi trường là gì?
Trong môi trường phát triển, nó có lợi thế và thực hành tốt nhất khi bạn có thời gian khởi động nhanh hơn (bỏ qua khi sử dụng trình tải trước như lò xo). Có lẽ nó cũng dễ dàng hơn cho việc tải lại thay đổi trong số các tùy chọn cache_classes=false
, vì bạn có ít để tải lại (chỉ là một giả định).
Trong môi trường thử nghiệm đôi khi bạn không thể sử dụng eager_loading=false
nếu bạn muốn ước tính một số chỉ số mã như mã vùng hoặc kiểm tra kiểu. Ví dụ. simple_cov
yêu cầu bạn phải eager_load tất cả mã trước khi bắt đầu kiểm tra. Và nói chung nó có thể xảy ra rằng một số libarary không thể được sử dụng với eager_loading bởi vì nó làm một số khởi tạo trên tải một lớp mà đã có sẵn ngay cả trước khi gọi nó là phương pháp. Tuy nhiên đây là một trường hợp phía sau, có nói rằng, nó đã xảy ra với chúng tôi với neo4j.rb đá quý
Nguồn
2015-01-08 08:53:56
ruby autoload là khá riêng biệt với những gì được sử dụng cho mã ứng dụng trong phát triển (mặc dù nó được sử dụng cho mã khung công tác) –