환영 배너 설정 활성화 이해하기 어려움

음, 이건 흥미롭네요… Moin, 관리자 UI에서 활성화되어 있음에도 불구하고 Foundation이 다시 사이트에서 누락되고 있습니다. SiteSetting.clear_cache!(expire_theme_site_setting_cache: true)로 캐시를 지워도 캐시가 지워지지 않습니다. 여기서 두 가지 다른 결과를 얻고 있습니다:

discourse(prod)> SiteSetting.theme_site_settings_json_uncached(-1)
=> "{\"enable_welcome_banner\":true,\"search_experience\":\"search_field\"}"
discourse(prod)> SiteSetting.theme_site_settings_json(-1)
=> "{\"enable_welcome_banner\":false,\"search_experience\":\"search_field\"}"

그리고 방금 이 코드를 직접 실행해 보았습니다:

Discourse.cache.delete(SiteSettingExtension.theme_site_settings_cache_key(-1))

그러자 작동하더군요?? 그 후 관리자에게서 설정을 다시 변경했는데 캐시가 유지되고 있습니다 :thinking: theme_site_settings의 메모리 내 처리에서 뭔가 이상한 일이 일어나고 있는 것 같습니다:

여기서는 다음과 같은 값을 반환합니다:

 -2=>{:enable_welcome_banner=>false, :search_experience=>"search_field"},
 -1=>{:enable_welcome_banner=>true, :search_experience=>"search_field"}}

반면 DB에서 가져오면, 올바른 false 값을 가진 다음 결과가 나옵니다:

ThemeSiteSetting.where(theme_id: -1)
=>
[#<ThemeSiteSetting:0x00007f9164acb2d0 id: 3, theme_id: -1, name: "enable_welcome_banner", data_type: 5, value: "f", created_at: "2025-07-16 07:04:11.117747000 +0000", updated_at: "2025-08-11 06:35:07.606301000 +0000">,
 #<ThemeSiteSetting:0x00007f9164acb190 id: 13, theme_id: -1, name: "search_experience", data_type: 7, value: "search_field", created_at: "2025-07-16 07:04:11.117747000 +0000", updated_at: "2025-07-20 20:56:49.405228000 +0000">]
discourse(prod)> Theme.find(-1).themeable_site_settings
=>
[{:setting=>:enable_welcome_banner, :default=>true, :description=>"Display a banner on your main topic list pages to welcome members and allow them to search site content", :humanized_name=>"Enable welcome banner", :type=>"bool", :value=>false},
 {:setting=>:search_experience,
  :default=>"search_icon",
  :description=>"The default position and appearance of search on desktop devices",
  :humanized_name=>"Search experience",
  :type=>"enum",
  :valid_values=>[{:name=>"search.experience.search_field", :value=>"search_field"}, {:name=>"search.experience.search_icon", :value=>"search_icon"}],
  :translate_names=>true,
  :value=>"search_field"}]

여기서 이 부분을 다룹니다:

그리고 여기:

이것은 여기서 호출됩니다:

그래서 이것이 왜 일어나는지는 아직 확실하지 않지만, 캐시가 이 메모리 내 객체로부터 생성되기 때문에 캐시가 유지되는 이유를 설명할 수 있을 것입니다.

수정: 또한 다른 곳에서는 이 문제를 재현할 수 없지만, Moin님의 사이트에서는 꽤 일관되게 재현할 수 있습니다.