autoload_paths vs eager_load_paths

استاندارد

بصورت پیشفرض در Rails برای Load کردن فایل هایی که خارج از مسیر app وجود دارند بایست از autoload_paths یا eager_load_paths استفاده کنیم. اما تفاوت بین این دو تابع چیست؟ با هم مرور می کنیم:

پیش نیاز

فایلی را در مسیر lib/foo.rb  با محتوای زیر ایجاد کنید.

autoload_paths

روش استفاده

نحوه عملکرد

در زمانی که کلاسی را فراخوانی می کنیم Rails در تمام مسیر هایی که در autoload_paths وجود دارد به دنبال کلاس مورد نظر می گردد و در صورتی که یافت شود آن را Load می کند.

آزمایش

Development Environment

Production Environment

eager_load_paths

روش استفاده

نحوه عملکرد

پس از Load شدن فریم ورک Rails، تمام فایل های rb.  که در eager_load_paths ثبت شده اند Load می شوند. اما اگر استفاده از این روش در تنظیمات Rails غیر فعال باشد، autoload_paths بجای آن استفاده می شود.

آزمایش

Development Environment

Production Environment

نتیجه گیری

روش autoload_paths باعث می شود سرعت Load شدن Rails افزایش یابد و برای محیط Development مناسب است، اما eager_load_paths بخاطر Load کردن همه فایل ها همراه با Rails سرعت پاسخ دهی را بالا می برد، به همین سبب بصورت پیش فرض eager_load_paths در محیط Development غیرفعال و در محیط Production فعال است.

در نهایت می توان گفت: استفاده از eager_load_paths بخاطر اینکه می تواند در هر محیط، روش مناسب را بکار ببرد، گزینه بهتری است.