2012-05-18 33 views
5

Đường ray 3.2.3. Tôi có một ứng dụng Rails với /lib trong các đường dẫn tự động tải của tôi. Một trong những tập tin thư viện của tôi là đòi hỏi một loạt các tập tin như vậyBuộc tải lại tệp thư viện được yêu cầu bởi tệp thư viện được tải tự động

Dir[Rails.root.join("lib/foo/*.rb")].each { |f| require f } 

Trong phát triển, các tập tin không tải lại nếu tôi thay đổi chúng. Ví dụ, nếu tôi sửa đổi /lib/foo/bar.rb, tôi sẽ phải khởi động lại máy chủ để xem những thay đổi đó. Bất cứ ai có thể đề xuất một cách để mỗi yêu cầu họ được nạp lại đúng cách?

Trả lời

3

Nếu bạn có những file trong đường dẫn autoload của bạn:

config.autoload_paths += %W(#{config.root}/lib) 

sau đó bạn không cần phải yêu cầu họ. Bạn đã thử với this chưa?

+1

Bạn có một paren dấu! – Excalibur

3

require không phát rất độc đáo với hệ thống tự động tải của đường ray.

require_dependency sẽ thực hiện khá nhiều việc cần làm nhưng giữ hệ thống tự động tải trong vòng lặp sao cho các hằng số được tải sẽ được tải xuống ở cuối yêu cầu. Bạn có thể cần phải đảm bảo rằng các tệp nằm trong đường dẫn tự động tải của đường ray

+0

Sau khi tôi xóa yêu cầu tải lại 'require' xảy ra tự động nếu tệp mô-đun đã thay đổi. Cảm ơn @Frederick Cheung –

0

Bạn phải thêm hoặc bỏ nhận xét dòng.

config.autoload_paths + =% W (# {config.root}/lib)

đến lớp ứng dụng của bạn trong config/application.rb

Các vấn đề liên quan