Насколько я понимаю, автозагрузка Rails заключается в том, что код не будет загружен в память, пока вы не ссылаетесь на него.Например, я создал класс с именем Thing
:
# app/concerns/thing.rb
class Thing
puts "Loaded Thing"
end
Загрузка консоли Rails ничего не печатает, пока я не создам экземпляр Thing
:
[ruby-1.9.2-p290@so_test_app test_app: 505]$ rails c
Loading development environment (Rails 3.2.1)
1.9.2p290 :001 > Thing.new
Loaded Thing
#<Thing:0x000001039c81b0>
1.9.2p290 :002 >
Я бы сказал, что вы можете безопасно организовать свой код под lib
(при условии, что вы добавили его в autoload_paths
), не оказывая негативного влияния на объем кода в памяти.
Редактировать: Ну, я передумал.Классы загружаются во время загрузки в производственной среде:
[ruby-1.9.2-p290@so_test_app test_app: 508]$ rails c production
Loaded Thing
Loading production environment (Rails 3.2.1)
1.9.2p290 :001 >
Мне нужно еще кое-что обдумать.