The Ruby on Rails developer faces an interesting duality. Their inner Rubyist is driven by a sense of beauty and explores a wide range of ways to solve a problem. The inner Railser is driven by a strong set of conventions and is guided by the Rails Way™. The /lib directory is where these developers meet and end result is a junk drawer of awkward code.
In this talk, I go over a few ways to keep this junk drawer problem from happening by adding some conventions I've created from building Rails in anger:
* Treat /lib as a temple (keep /lib in a state to extract to a gem in minutes)
* Avoid autoloading everything in /lib
* Use configuration to hide credentials from your library code
* Isolate your Domain Objects from library concerns through DCI