Loading nested gems with zeitwerk
Montag, 12. April 2021, 14:40 Uhr | roberto@vasquez-angel.de |When you have a gem with an nested namespace like “rao-api-resources_controller” (-> Rao::Api::ResourcesController) you cannot use the for_gem method of zeitwerk. Instead you can do as follows:
# lib/rao/api/resources_controller.rb
loader = Zeitwerk::Loader.new.tap do |loader|
root = Pathname.new(File.expand_path("../../..", __dir__))
loader.push_dir(File.absolute_path(root.join("lib")))
loader.inflector = Class.new(Zeitwerk::Inflector) do
def camelize(basename, abspath)
if abspath.end_with?("rao/api/resources_controller/version.rb")
"VERSION"
else
super
end
end
end.new
loader.setup
loader
end