title: Rails 6+, zeitwerk autoloader and namedspaced constants
body: <p>The Rails 6+ default autoloader is zeitwerk, which seems like a great improvement over previous approaches.</p>
  
  <p>However, zeitwork follows the convention for Rails projects that anything in <code>app/*</code> is autoloaded and doesn't need to be namespaced.</p>
  
  <p>This works great for <code>app/models/user.rb</code> because you don't have to use <code>Models::User</code> but can just reference <code>User</code>.</p>
  
  <p>However, I added my own <code>app/services</code> directory and I namespace my service objects as <code>Services::Users::Create</code>, which would map to <code>app/services/users/create.rb</code>.</p>
  
  <p>Zeitwork is throwing errors that my class constants don't exist, since it is expecting <code>Users::Create</code> (without the <code>Services::</code> prefix).</p>
  
  <p>Is there anyway to configure zeitwork to require the <code>Services::</code> namespace in these instances?  In my opinion, it is a much cleaner to read the code as <code>Services::Users::Create</code> and know that you're looking in the <code>app/services/users/create.rb</code> file.</p>
  
  <p>If you just had <code>Users::Create</code>, an average Rails developer would probably look for the <code>app/models/users/create.rb</code> file.</p>
  
  <p>I don't like the approach of naming it <code>Users::CreateService</code>, it just seems very inelegant to me.</p>
  
  <p>I can't be the only one who uses conventions like this; has anyone else come across a solution?  I'm still going through all the zeitwerk documentation looking for a solution but haven't found one yet.</p>