Data Explorer 플러그인 최신 버전 설치 실패

안녕하세요,

몇 일째 이 지점에서 막혀 있습니다. 혹시 도움을 주실 수 있는 분이 계신가요!

Discourse 인스턴스에 Data Explorer 최신 버전을 설치하려고 하면 아래 오류가 발생합니다:

NameError: uninitialized constant BaseBookmarkable
/opt/bitnami/discourse/plugins/discourse-data-explorer/lib/data_explorer_query_group_bookmarkable.rb:3:in `<main>'
/opt/bitnami/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.9.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:60:in `load'
/opt/bitnami/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.9.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:60:in `load'
/opt/bitnami/discourse/plugins/discourse-data-explorer/plugin.rb:878:in `block in activate!'
/opt/bitnami/discourse/lib/plugin/instance.rb:478:in `block in notify_after_initialize'
/opt/bitnami/discourse/lib/plugin/instance.rb:476:in `each'
/opt/bitnami/discourse/lib/plugin/instance.rb:476:in `notify_after_initialize'
/opt/bitnami/discourse/config/application.rb:364:in `each'
/opt/bitnami/discourse/config/application.rb:364:in `block (2 levels) in <class:Application>'
/opt/bitnami/discourse/lib/plugin_initialization_guard.rb:5:in `plugin_initialization_guard'
/opt/bitnami/discourse/config/application.rb:363:in `block in <class:Application>'
/opt/bitnami/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.6.1/lib/active_support/lazy_load_hooks.rb:68:in `block in execute_hook'
/opt/bitnami/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.6.1/lib/active_support/lazy_load_hooks.rb:61:in `with_execution_control'
/opt/bitnami/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.6.1/lib/active_support/lazy_load_hooks.rb:66:in `execute_hook'
/opt/bitnami/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.6.1/lib/active_support/lazy_load_hooks.rb:52:in `block in run_load_hooks'
/opt/bitnami/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.6.1/lib/active_support/lazy_load_hooks.rb:51:in `each'
/opt/bitnami/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.6.1/lib/active_support/lazy_load_hooks.rb:51:in `run_load_hooks'
/opt/bitnami/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.6.1/lib/rails/application/finisher.rb:140:in `block in <module:Finisher>'
/opt/bitnami/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.6.1/lib/rails/initializable.rb:32:in `instance_exec'
/opt/bitnami/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.6.1/lib/rails/initializable.rb:32:in `run'
/opt/bitnami/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.6.1/lib/rails/initializable.rb:61:in `block in run_initializers'
/opt/bitnami/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.6.1/lib/rails/initializable.rb:60:in `run_initializers'
/opt/bitnami/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.6.1/lib/rails/application.rb:391:in `initialize!'
/opt/bitnami/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.6.1/lib/rails/railtie.rb:207:in `public_send'
/opt/bitnami/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.6.1/lib/rails/railtie.rb:207:in `method_missing'
/opt/bitnami/discourse/config/environment.rb:7:in `<main>'
/opt/bitnami/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.9.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
/opt/bitnami/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.9.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
/opt/bitnami/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.9.4/lib/bootsnap/load_path_cache/loaded_features_index.rb:88:in `register'
/opt/bitnami/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.9.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
/opt/bitnami/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.9.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
/opt/bitnami/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.6.1/lib/rails/application.rb:367:in `require_environment!'
/opt/bitnami/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.6.1/lib/rails/application.rb:533:in `block in run_tasks_blocks'
/opt/bitnami/discourse/vendor/bundle/ruby/2.7.0/gems/sprockets-rails-3.4.2/lib/sprockets/rails/task.rb:61:in `block (2 levels) in define'
/opt/bitnami/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
/opt/bitnami/ruby/bin/bundle:25:in `load'
/opt/bitnami/ruby/bin/bundle:25:in `<main>'
Tasks: TOP => environment

@frank.manuel 님의 새로운 기능: Bookmarkable QueryGroups 관련 커밋 이후에 이런 문제가 발생한 것 같습니다.

@VladChad 님의 답변에 언급된 대로 이전 커밋으로 리셋을 시도해 보았으며, 덕분에 플러그인 설치와 활성화는 가능해졌습니다. 하지만 “/admin/plugins/explorer/queries” 경로로 이동하면 새로운 500 오류가 발생합니다(로그는 아래 참조).

Started GET "/admin/plugins/explorer/queries" for 192.168.50.1 at 2022-09-08 16:16:36 +0000
Processing by DataExplorer::QueryController#index as JSON
Completed 500 Internal Server Error in 17ms (ActiveRecord: 0.0ms | Allocations: 1368)
ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR:  relation "data_explorer_queries" does not exist
LINE 8:  WHERE a.attrelid = '"data_explorer_queries"'::regclass
                            ^
)
app/controllers/application_controller.rb:387:in `block in with_resolved_locale'
app/controllers/application_controller.rb:387:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:361:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/request_tracker.rb:198:in `call'
Failed to handle exception in exception app middleware : PG::UndefinedTable: ERROR:  relation "data_explorer_queries" does not exist
LINE 8:  WHERE a.attrelid = '"data_explorer_queries"'::regclass

감사합니다,

app.yml에 어떤 버전의 discourse가 지정되어 있나요? tests-passed를 실행 중인가요?

Bitnami의 최신 Discourse release 2.8.8-debian-11-r9 버전을 사용 중입니다.

bitnami 설치에 대한 지원을 제공할 수 없습니다. bitnami 빌드가 공식 릴리스보다 뒤처져 있어 문제가 발생하는 경우가 매우 흔합니다.

Bitnami에 지원을 요청할 수 있지만, 백업을 받아 표준 설치로 전환하는 것을 권장합니다. 장기적으로 훨씬 많은 문제를 예방할 수 있습니다.

문제는 Data Explorer의 실제 버전(메인 브랜치)이 Discourse 2.8.8과 호환되지 않는 것이었습니다. 표준 설치와 Bitnami 설치 모두를 시도해 보았지만 문제가 해결되지 않았습니다.

결국 Discourse Bitnami에 플러그인을 설치하는 해결책을 찾았습니다:

cd /opt/bitnami/discourse
sudo RAILS_ENV=production bundle exec rake plugin:install repo=PLUGIN_REPO_URL
...
RAILS_ENV=production LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all
RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake themes:update assets:precompile

마지막 3개의 명령은 다음과 같은 목적으로 필요합니다:

  • 설치된 Discourse 버전과의 플러그인 호환성을 확인하고, 각 지정된 플러그인에 대해 가장 최근의 호환 가능한 버전을 가져옵니다.
  • 필요한 경우 데이터베이스 마이그레이션을 실행합니다.
  • 테마를 업데이트하고 에셋을 컴파일합니다.