Skip to main content

versioned_autoload_paths

📂 Dynamic Versioned Autoload Paths​

Keep your versioned code DRY by dynamically adding versioned modules to Rails’ autoload paths. This eliminates manual require_dependency calls and leverages Zeitwerk for isolating controllers, serializers, and even service objects under app/api/vX.

# config/application.rb
module MyApp
class Application < Rails::Application
config.autoload_paths += Dir[Rails.root.join('app', 'api', 'v*')]
config.eager_load_paths += config.autoload_paths
end
end

Then structure your directory:

app/api/v1/posts_controller.rb
app/api/v2/posts_controller.rb
app/api/v2/serializers/post_serializer.rb