Hey all,
Is it possible to have a top level module with dry-system? Standard ruby app, using agoo as the web server. File structure is as follows:
lib
├── orders
│ ├── repositories
│ │ └── repo_1.rb
│ ├── consumers
│ │ └── consumer_1.rb
│ ├── tasks
Before adding dry-system; everything is under the Orders module and works fine. So Orders::Repositories::Repo1
etc etc. I can’t see to figure this out with dry-system however.
This is what my current container looks like:
require "dry/system/container"
class Application < Dry::System::Container
# use :logging
use :monitoring
use :env, inferrer: -> { ENV.fetch("RACK_ENV", :development).to_sym }
configure do |config|
config.name = :order
config.auto_register = %w[lib]
end
load_paths! "config", "lib", "system"
end
# requiring other dependecies here like pry, bundler/setup etc.
I’ve managed this in a previous project with nested containers. We had an application container, and another container for the top-level module. Is this the expected way to do it?
Because we had weird issues where a file out of the blue, didn’t get auto registrered (After working fine for months) and we had to require it manually after that. If it’s the expected way to to do it then that’s fine I will do it again, if not then can somoene advise on how they achieved it? Thanks.
I feel like this file structure is a common pattern in ruby so I’m suprised there is little documentation/examples covering it. Will add one if I get a solid solution.