Use view_helpers of the controller instance instead of standalone module #45
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I could reproduce this issue by configuring the dummy app as shown in this PR and rendering the root path of the dummy app.
If you're using an
asset_host
lambda to generate a host based on the request, some view helpers in the middleware fail with anArgumentError
. Before this PR, the middleware usedActionView::Base.helpers
, which doesn't know about the current request. This will result in an ArgumentError with an backtrace similar to:Basically if
asset_host
is a lambda with 2 or more args,compute_asset_host
wants to be called in a request context.Since we're in a middleware, we have access to the current request, which should allow us to access the asset helpers in a request context. I'm using
@request.controller_instance.helpers
to access the view helpers, which has the advantage of being in context of the request/controller. This fixes #43.Maybe this bug doesn't really warrant the dummy app to be reconfigured though 🤔