Skip to content

Conversation

@salmanasiddiqui
Copy link

What? Why?

I ran into a problem in a Rails app which was made up of multiple Rails engines. The problem was that two engines were using Gruf and when they were used in same Rails app, the Gruf config for controllers_path was getting overridden.

So to fix that problem, I patched Gruf to support multiple paths for controllers by adding a new config field controllers_paths. This field defaults to [controllers_path]. Gruf uses this controllers_paths instead of controllers_path everywhere, but controllers_path is kept in config for backward compatibility.

Note: I think the config should support something like add_controllers_paths, instead of directly setting controllers_paths. That will allow multiple modules to add their controllers path without messing with the existing paths. Let me know if you like this idea, I will update the PR

How was it tested?

All the specs are passing

@salmanasiddiqui salmanasiddiqui force-pushed the support_multiple_controllers_path branch from 0f13ad1 to c420089 Compare May 17, 2025 21:40
@salmanasiddiqui salmanasiddiqui force-pushed the support_multiple_controllers_path branch from c420089 to 0bb6edb Compare May 17, 2025 21:44
@salmanasiddiqui salmanasiddiqui force-pushed the support_multiple_controllers_path branch from 0a54514 to b122b8a Compare May 17, 2025 21:50
@salmanasiddiqui salmanasiddiqui marked this pull request as ready for review May 17, 2025 21:57
@salmanasiddiqui
Copy link
Author

Hey @splittingred 👋🏽 , this PR is ready for review with the suggestion you made #213 (comment)

Comment on lines +27 to +37
# Initialize the autoloaders with given controllers paths
#
# @param [String] controllers_path The path to Gruf Controllers
# @param [Array<String>] controllers_paths The path to Gruf Controllers
#
def load!(controllers_path:)
controllers(controllers_path: controllers_path)
def load!(controllers_path: nil, controllers_paths: [])
if controllers_path
::Gruf.logger.warn('controllers_path is deprecated. Please use controllers_paths instead.')
controllers_paths = [controllers_path]
end
controllers(controllers_paths: controllers_paths)
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @splittingred 👋🏽

this is the change you requested in #213 (comment)

I have updated this accordingly. Let me know if you would like any other change

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant