Fix no avatar not showing in user selection box
After upgrading to Ruby 2.5.3, we switched `URI.join` in favor of `Gitlab::Utils.append_path`. However, ActionController::Base.helpers.image_path can return a full URL if a CDN host is present. Rails provides a way to generate the full URL using the asset path, but that doesn't appear to work because `request` is nil`. Revert to the previous behavior to handle CDNs and relative URLs. Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/56268
This commit is contained in:
parent
1161c99e5c
commit
2265ce34af
3 changed files with 25 additions and 4 deletions
5
changelogs/unreleased/sh-fix-gon-helper-avatar.yml
Normal file
5
changelogs/unreleased/sh-fix-gon-helper-avatar.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Fix no avatar not showing in user selection box
|
||||
merge_request: 24346
|
||||
author:
|
||||
type: fixed
|
|
@ -8,10 +8,7 @@ module Gitlab
|
|||
|
||||
def add_gon_variables
|
||||
gon.api_version = 'v4'
|
||||
gon.default_avatar_url =
|
||||
Gitlab::Utils.append_path(
|
||||
Gitlab.config.gitlab.url,
|
||||
ActionController::Base.helpers.image_path('no_avatar.png'))
|
||||
gon.default_avatar_url = default_avatar_url
|
||||
gon.max_file_size = Gitlab::CurrentSettings.max_attachment_size
|
||||
gon.asset_host = ActionController::Base.asset_host
|
||||
gon.webpack_public_path = webpack_public_path
|
||||
|
@ -50,5 +47,15 @@ module Gitlab
|
|||
# use this method to push multiple feature flags.
|
||||
gon.push({ features: { var_name => enabled } }, true)
|
||||
end
|
||||
|
||||
def default_avatar_url
|
||||
# We can't use ActionController::Base.helpers.image_url because it
|
||||
# doesn't return an actual URL because request is nil for some reason.
|
||||
#
|
||||
# We also can't use Gitlab::Utils.append_path because the image path
|
||||
# may be an absolute URL.
|
||||
URI.join(Gitlab.config.gitlab.url,
|
||||
ActionController::Base.helpers.image_path('no_avatar.png')).to_s
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -29,4 +29,13 @@ describe Gitlab::GonHelper do
|
|||
helper.push_frontend_feature_flag(:my_feature_flag, 10)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#default_avatar_url' do
|
||||
it 'returns an absolute URL' do
|
||||
url = helper.default_avatar_url
|
||||
|
||||
expect(url).to match(/^http/)
|
||||
expect(url).to match(/no_avatar.*png$/)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue