简体   繁体   中英

Why use /app/lib instead of /lib in Rails?

In the sidekiq documentation, there is this quote about preferring to use /app/lib instead of /lib in Rails projects related to autoloading errors:

A lib/ directory will only cause pain. Move the code to app/lib/ and make sure the code inside follows the class/filename conventions.

Additionally, there is also:

Don't configure extra paths in autoload_paths or eager_load_paths. That's a hack; follow the conventions! Any directory underneath app/ may contain Ruby code, you don't need to explicitly configure anything.

My questions are:

Is there any truth to these statements that using /app/lib is better than /lib ?

Is this only helpful for autoloading Rails-related objects (such as AR models, controllers, jobs, etc)? Or will it also help POROs?

Is there only a specific context in which these comments make sense?

In my experience app/lib is easier to use. You can literally stick in something like Class MathFunction and use it elsewhere (eg controllers or modules) with MathFunction.sqrRoot .

To use /lib you need to configure your Rails app with autoload_paths . autoload_paths also need some tweaking to work properly in production . Matz himself discourages autoload because it's in the process of being deprecated .

The only time I've needed to use the lib directory is for making custom rake tasks. Otherwise I stick to app/lib .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM