BryanV
(Bryan Van de ven)
12월 2, 2021, 7:53오후
1
오늘 업그레이드 관련 알림을 받았는데, 업그레이드 페이지로 이동해 보니 화면이 비어 있었습니다:
이와 관련된 여러 스레드를 확인해 보니, 대다수의 의견은 수동으로 재빌드(rebuild)하라는 것입니다. 그런데 사실 저는 2일 전에 직접 작성한 커스텀 Onebox 플러그인을 설치하면서 이미 수동 재빌드를 수행한 상태였습니다:
https://github.com/bokeh/discourse-bokeh-onebox
이 빈 페이지가 왜 발생하는지 이해하고 싶습니다. 제 단순한 플러그인에 문제가 있어 이런 일이 발생한 건가요, 아니면 제가 변경해야 할 부분이 있는 건가요? 플러그인과 무관한 문제라면, 향후 이런 상황을 피하기 위해 제가 할 수 있는 조치가 있을까요?
안전 모드에서 플러그인을 비활성화하면 이런 문제가 발생하는지 확인해 보세요. 원인을 좁히는 데 도움이 될 수 있습니다.
[YourSite]/safe-mode
BryanV
(Bryan Van de ven)
12월 2, 2021, 8:36오후
3
안전 모드 /admin 페이지에 /upgrade 링크가 더 이상 존재하지 않으며, 해당 페이지로 직접 이동하려고 해도 작동하지 않습니다
죄송합니다! 해당 페이지가 존재하지 않거나 비공개입니다.
‘모든 플러그인 비활성화’ 체크박스를 해제하되, 나머지 두 항목은 그대로 두면 해당 항목이 표시됩니다. 공식 플러그인을 비활성화하면 docker-manager도 비활성화되지만, 그래도 테마와 비공식 플러그인은 확인할 수 있을 것입니다. 도움이 되셨길 바랍니다.
업그레이드 페이지에서 F12를 입력하면 콘솔에 빨간색 경고가 표시됩니까?
BryanV
(Bryan Van de ven)
12월 2, 2021, 9:16오후
6
@JammyDodger 아, 감사합니다. 하지만 그건 도움이 되지 않아요. 업그레이드 페이지가 완전히 비어 있거든요. 테마와 비공식 플러그인을 비활성화한 안전 모드에서도 마찬가지입니다.
@Steven 네, 이건 JS 콘솔 로그에 있는 내용입니다.
BryanV
(Bryan Van de ven)
12월 3, 2021, 12:30오전
7
정리하자면,
https://discourse.bokeh.org/admin/docker/repos
에 대한 AJAX 요청에서 500 HTTP 오류가 발생하여 페이지가 비어 있는 것으로 보입니다. 이 현상에 대해 알려진 설명이 있나요? 수동 재구축을 제외하고는 어떤 수정 조치가 가능한가요?
Falco
(Falco)
12월 3, 2021, 12:44오전
8
500 오류가 발생하면 /logs에 해당 항목이 있어야 합니다.
BryanV
(Bryan Van de ven)
12월 3, 2021, 1:30오전
9
@Falco 감사합니다, 해당 엔드포인트에 대해 알지 못했습니다. 에러는 다음과 같습니다.
NoMethodError (undefined method downcase' for nil:NilClass) lib/middleware/omniauth_bypass_middleware.rb:71:in call’ lib/content_security_policy/middleware.rb:12:in `call’ lib/middleware/anonymous_c
plugins/docker_manager/app/controllers/docker_manager/admin_controller.rb:40:in `block in repos'
plugins/docker_manager/app/controllers/docker_manager/admin_controller.rb:29:in `map!'
plugins/docker_manager/app/controllers/docker_manager/admin_controller.rb:29:in `repos'
actionpack (6.1.4.1) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
actionpack (6.1.4.1) lib/abstract_controller/base.rb:228:in `process_action'
actionpack (6.1.4.1) lib/action_controller/metal/rendering.rb:30:in `process_action'
actionpack (6.1.4.1) lib/abstract_controller/callbacks.rb:42:in `block in process_action'
activesupport (6.1.4.1) lib/active_support/callbacks.rb:106:in `run_callbacks'
actionpack (6.1.4.1) lib/abstract_controller/callbacks.rb:41:in `process_action'
actionpack (6.1.4.1) lib/action_controller/metal/rescue.rb:22:in `process_action'
actionpack (6.1.4.1) lib/action_controller/metal/instrumentation.rb:34:in `block in process_action'
activesupport (6.1.4.1) lib/active_support/notifications.rb:203:in `block in instrument'
activesupport (6.1.4.1) lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport (6.1.4.1) lib/active_support/notifications.rb:203:in `instrument'
actionpack (6.1.4.1) lib/action_controller/metal/instrumentation.rb:33:in `process_action'
actionpack (6.1.4.1) lib/action_controller/metal/params_wrapper.rb:249:in `process_action'
activerecord (6.1.4.1) lib/active_record/railties/controller_runtime.rb:27:in `process_action'
actionpack (6.1.4.1) lib/abstract_controller/base.rb:165:in `process'
actionview (6.1.4.1) lib/action_view/rendering.rb:39:in `process'
rack-mini-profiler (2.3.3) lib/mini_profiler/profiling_methods.rb:85:in `block in profile_method'
actionpack (6.1.4.1) lib/action_controller/metal.rb:190:in `dispatch'
actionpack (6.1.4.1) lib/action_controller/metal.rb:254:in `dispatch'
actionpack (6.1.4.1) lib/action_dispatch/routing/route_set.rb:50:in `dispatch'
actionpack (6.1.4.1) lib/action_dispatch/routing/route_set.rb:33:in `serve'
actionpack (6.1.4.1) lib/action_dispatch/routing/mapper.rb:19:in `block in <class:Constraints>'
actionpack (6.1.4.1) lib/action_dispatch/routing/mapper.rb:49:in `serve'
actionpack (6.1.4.1) lib/action_dispatch/journey/router.rb:50:in `block in serve'
actionpack (6.1.4.1) lib/action_dispatch/journey/router.rb:32:in `each'
actionpack (6.1.4.1) lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack (6.1.4.1) lib/action_dispatch/routing/route_set.rb:842:in `call'
railties (6.1.4.1) lib/rails/engine.rb:539:in `call'
railties (6.1.4.1) lib/rails/railtie.rb:207:in `public_send'
railties (6.1.4.1) lib/rails/railtie.rb:207:in `method_missing'
actionpack (6.1.4.1) lib/action_dispatch/routing/mapper.rb:20:in `block in <class:Constraints>'
actionpack (6.1.4.1) lib/action_dispatch/routing/mapper.rb:49:in `serve'
actionpack (6.1.4.1) lib/action_dispatch/journey/router.rb:50:in `block in serve'
actionpack (6.1.4.1) lib/action_dispatch/journey/router.rb:32:in `each'
actionpack (6.1.4.1) lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack (6.1.4.1) lib/action_dispatch/routing/route_set.rb:842:in `call'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
rack (2.2.3) lib/rack/tempfile_reaper.rb:15:in `call'
rack (2.2.3) lib/rack/conditional_get.rb:27:in `call'
rack (2.2.3) lib/rack/head.rb:12:in `call'
actionpack (6.1.4.1) lib/action_dispatch/http/permissions_policy.rb:22:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:356:in `call'
rack (2.2.3) lib/rack/session/abstract/id.rb:266:in `context'
rack (2.2.3) lib/rack/session/abstract/id.rb:260:in `call'
actionpack (6.1.4.1) lib/action_dispatch/middleware/cookies.rb:689:in `call'
actionpack (6.1.4.1) lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport (6.1.4.1) lib/active_support/callbacks.rb:98:in `run_callbacks'
actionpack (6.1.4.1) lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack (6.1.4.1) lib/action_dispatch/middleware/actionable_exceptions.rb:18:in `call'
actionpack (6.1.4.1) lib/action_dispatch/middleware/debug_exceptions.rb:29:in `call'
actionpack (6.1.4.1) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
logster (2.9.8) lib/logster/middleware/reporter.rb:43:in `call'
railties (6.1.4.1) lib/rails/rack/logger.rb:37:in `call_app'
railties (6.1.4.1) lib/rails/rack/logger.rb:28:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
actionpack (6.1.4.1) lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
actionpack (6.1.4.1) lib/action_dispatch/middleware/request_id.rb:26:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
rack (2.2.3) lib/rack/method_override.rb:24:in `call'
actionpack (6.1.4.1) lib/action_dispatch/middleware/executor.rb:14:in `call'
rack (2.2.3) lib/rack/sendfile.rb:110:in `call'
actionpack (6.1.4.1) lib/action_dispatch/middleware/host_authorization.rb:92:in `call'
rack-mini-profiler (2.3.3) lib/mini_profiler/profiler.rb:249:in `call'
message_bus (3.3.6) lib/message_bus/rack/middleware.rb:61:in `call'
lib/middleware/request_tracker.rb:198:in `call'
railties (6.1.4.1) lib/rails/engine.rb:539:in `call'
railties (6.1.4.1) lib/rails/railtie.rb:207:in `public_send'
railties (6.1.4.1) lib/rails/railtie.rb:207:in `method_missing'
rack (2.2.3) lib/rack/urlmap.rb:74:in `block in call'
rack (2.2.3) lib/rack/urlmap.rb:58:in `each'
rack (2.2.3) lib/rack/urlmap.rb:58:in `call'
unicorn (6.0.0) lib/unicorn/http_server.rb:634:in `process_client'
unicorn (6.0.0) lib/unicorn/http_server.rb:732:in `worker_loop'
unicorn (6.0.0) lib/unicorn/http_server.rb:547:in `spawn_missing_workers'
unicorn (6.0.0) lib/unicorn/http_server.rb:143:in `start'
unicorn (6.0.0) bin/unicorn:128:in `<top (required)>'
vendor/bundle/ruby/2.7.0/bin/unicorn:25:in `load'
vendor/bundle/ruby/2.7.0/bin/unicorn:25:in `<main>'
Falco
(Falco)
12월 3, 2021, 1:46오전
10
BryanV
(Bryan Van de ven)
12월 3, 2021, 1:51오전
11
@Falco 제 Onebox 플러그인일 것 같습니다(추측이지만), 안전 모드에서도 동작하지 않은 이유는 정확히 모르겠습니다. 어쨌든 Ruby를 한 번도 작성해 본 적 없는데, 여러 조각을 모아 이 파일 하나를 만들었습니다. 혹시 "name"을 어디에 어떻게 지정해야 하는지 아신다면 알려주시면 감사하겠습니다:
https://github.com/bokeh/discourse-bokeh-onebox/blob/main/plugin.rb
Falco
(Falco)
12월 3, 2021, 2:02오전
12
BryanV
(Bryan Van de ven)
12월 3, 2021, 2:26오전
13
예시를 여러 개 언급한 건 맞아요. 다만 이름이 실제 데이터/코드로 설정되는 게 아니라 주석에서 파싱된다는 건 전혀 예상 못 했거든요. 플러그인을 업데이트해서 다시 빌드해볼게요. 감사합니다.