Tickets Plugin ๐ŸŽŸ

ํƒœ๊ทธ ํ•„ํ„ฐ๋ง์ด ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ด€๋ จ์ด ์žˆ๋‹ค๋ฉด ํ˜„์žฌ bb019aab5d ์ปค๋ฐ‹์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํƒ ํŠธ๋ ˆ์ด์Šค๋Š” ์•„๋ž˜์— ์žˆ์Šต๋‹ˆ๋‹ค.

NoMethodError (undefined method id' for #<Array:0x00007f2c08ca79f8>) app/controllers/tags_controller.rb:249:in searchโ€™
app/controllers/application_controller.rb:404:in block in with_resolved_locale' app/controllers/application_controller.rb:404: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:368: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:202:in `callโ€™

Backtrace

plugins/discourse-tickets/plugin.rb:47:in block in filter_allowed_tags' plugins/discourse-tickets/plugin.rb:47:in selectโ€™
plugins/discourse-tickets/plugin.rb:47:in filter_allowed_tags' app/controllers/tags_controller.rb:249:in searchโ€™
actionpack (6.1.4.7) lib/action_controller/metal/basic_implicit_render.rb:6:in send_action' actionpack (6.1.4.7) lib/abstract_controller/base.rb:228:in process_actionโ€™
actionpack (6.1.4.7) lib/action_controller/metal/rendering.rb:30:in process_action' actionpack (6.1.4.7) lib/abstract_controller/callbacks.rb:42:in block in process_actionโ€™
activesupport (6.1.4.7) lib/active_support/callbacks.rb:117:in block in run_callbacks' app/controllers/application_controller.rb:404:in block in with_resolved_localeโ€™

Env

HTTP HOSTS: forums.librehealth.io

Tickets ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋ฌธ์ œ๊ฐ€ ๋ณด๊ณ ๋˜์—ˆ์œผ๋ฉฐ, ์•ˆํƒ€๊น๊ฒŒ๋„ ํ˜„์žฌ #plugin:broken-plugin์œผ๋กœ ํ‘œ์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์•ฑ์˜ app.yml ํŒŒ์ผ์—์„œ ํ•ด๋‹น ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ œ๊ฑฐํ•˜๊ณ  ๋‹ค์‹œ ๋นŒ๋“œํ•˜๋ฉด, ์‚ฌ์ดํŠธ์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์ด ํƒœ๊ทธ๋ฅผ ์ •์ƒ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

(์ด ๋ฌธ์ œ๋ฅผ ๋” ์ž˜ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด๋‹น ๊ฒŒ์‹œ๊ธ€๋“ค์„ Tickets ํ† ํ”ฝ์œผ๋กœ ์˜ฎ๊ฒผ์Šต๋‹ˆ๋‹ค :+1:)

2๊ฐœ์˜ ์ข‹์•„์š”

@JammyDodger ๊ทธ๊ฑธ ์™„์ „ํžˆ ๋†“์น˜๊ณ  ์žˆ์—ˆ๋„ค์š” โ€“ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

2๊ฐœ์˜ ์ข‹์•„์š”

์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ํ๊ธฐ๋œ ๊ฒƒ ๊ฐ™์•„ ์ •๋ง ์•„์‰ฌ์›Œ์š”. ๋ถ„๋ช… ๋งŽ์€ ๊ณต๋ ฅ์ด ๋“ค์–ด๊ฐ”์„ ํ…๋ฐ, ์ž ์žฌ๋ ฅ๋„ ์ƒ๋‹นํ–ˆ์ž–์•„์š”! ์–ธ์  ๊ฐ€ ๋‹ค์‹œ ๋ถ€ํ™œํ–ˆ์œผ๋ฉด ์ข‹๊ฒ ๋„ค์š”โ€ฆ

2๊ฐœ์˜ ์ข‹์•„์š”

#plugin:broken-plugin ์ด๋™์„ ๋…ผ์˜ํ–ˆ๋˜ ์ฃผ์ œ์—์„œ

2๊ฐœ์˜ ์ข‹์•„์š”

TIckets ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ๋„ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ๋Š”๋ฐ, ๊ฐœ์ธ ๋ฉ”์‹œ์ง€(PM)์— ํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ•˜๋ฉด "Internal Sever Error"๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋น„ํ™œ์„ฑํ™”ํ•œ ํ›„ ์ •์ƒ์œผ๋กœ ๋Œ์•„์™”์Šต๋‹ˆ๋‹ค.

์—๋Ÿฌ ๋กœ๊ทธ:

plugins/discourse-tickets/plugin.rb:47:in `block in filter_allowed_tags'

plugins/discourse-tickets/plugin.rb:47:in `select'

plugins/discourse-tickets/plugin.rb:47:in `filter_allowed_tags'

app/controllers/tags_controller.rb:249:in `search'

actionpack (7.0.2.4) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'

actionpack (7.0.2.4) lib/abstract_controller/base.rb:214:in `process_action'

actionpack (7.0.2.4) lib/action_controller/metal/rendering.rb:53:in `process_action'

actionpack (7.0.2.4) lib/abstract_controller/callbacks.rb:234:in `block in process_action'

activesupport (7.0.2.4) lib/active_support/callbacks.rb:118:in `block in run_callbacks'

app/controllers/application_controller.rb:404:in `block in with_resolved_locale'

i18n (1.10.0) lib/i18n.rb:328:in `with_locale'

app/controllers/application_controller.rb:404:in `with_resolved_locale'

activesupport (7.0.2.4) lib/active_support/callbacks.rb:127:in `block in run_callbacks'
2๊ฐœ์˜ ์ข‹์•„์š”

@robbyoconnor @Nick_Chomey @jerry0 ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋˜ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ˆ˜์ •์„ ๋ฐฉ๊ธˆ pushํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€ ์—…๋ฐ์ดํŠธ ํ›„ ์ˆ˜์ •์ด ์ž˜ ๋œ ๊ฒƒ์„ ํ™•์ธํ•ด ์ฃผ์‹œ๋ฉด, ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ #customization:plugin์œผ๋กœ ๋˜๋Œ๋ ค ๋†“๊ฒ ์Šต๋‹ˆ๋‹ค.

4๊ฐœ์˜ ์ข‹์•„์š”

๊ณง ํ…Œ์ŠคํŠธํ•ด์„œ ๊ฒฐ๊ณผ๋ฅผ ์•Œ๋ ค๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

2๊ฐœ์˜ ์ข‹์•„์š”

@angus

์ด ์ž‘์—…์— ๋Œ€ํ•ด ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๊ณง ๋งˆ๋ฌด๋ฆฌ๋  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์ง„์‹ฌ์œผ๋กœ ๋ฐ”๋ž๋‹ˆ๋‹ค!

๊ธฐ๋ณธ์ ์ธ ํ…Œ์ŠคํŠธ๋ฅผ ๋ช‡ ๊ฐ€์ง€ ํ•ด๋ณด์•˜๋Š”๋ฐ, ์ œ๊ฐ€ ์—ฌ๊ธฐ์— ๋ณด๊ณ ํ–ˆ๋˜ ๋Œ€๋ถ€๋ถ„์˜ ๋ฌธ์ œ๊ฐ€ ์—ฌ์ „ํžˆ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค.

"์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค"๋ผ๋Š” ํŒ์—… ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋Š” ๋” ์ด์ƒ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์ง€๋งŒ, ํ‹ฐ์ผ“ ๋ชจ๋“ˆ์˜ ํ• ๋‹น(Assign) ๋ฒ„ํŠผ(ํƒœ๊ทธ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ๋ฒ„ํŠผ)์„ ํด๋ฆญํ•˜๋ฉด ์•„๋ฌด ๋ฐ˜์‘์ด ์—†๊ณ , ์ด์ „ ํ™”๋ฉด ๋…นํ™”์—์„œ ๋ณด์˜€๋˜ ๊ฒƒ๊ณผ ๋™์ผํ•œ ์ฝ˜์†” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

ํ† ํ”ฝ ์•„๋ž˜์— ์žˆ๋Š” ํ• ๋‹น ๋ฒ„ํŠผ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ† ํ”ฝ์„ ํ• ๋‹นํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ, ํ‹ฐ์ผ“๊ณผ ํ• ๋‹น ๊ธฐ๋Šฅ์ด ์—ฌ์ „ํžˆ ์„œ๋กœ ์—ฐ๋™๋˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ‹ฐ์ผ“ ๋Œ€์‹œ๋ณด๋“œ์˜ โ€˜ํ• ๋‹น๋จ(Assigned)โ€™ ์—ด์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ฑ„์›Œ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ, ์ด ๋ถ€๋ถ„์„ ํ™•์ธํ•˜์‹œ๋Š” ๋™์•ˆ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์š”์ฒญํ•ด ์˜จ ์‚ฌํ•ญ์—๋„ ์กฐ๊ธˆ ๊ด€์‹ฌ์„ ๊ฐ€์ ธ์ฃผ์…จ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค. โ€˜Staff(๊ด€๋ฆฌ์ž)โ€™ ๊ทธ๋ฃน ์™ธ์— ๋‹ค๋ฅธ ๊ทธ๋ฃน๋„ ํ‹ฐ์ผ“์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•ด ์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ์กฐ๊ธˆ ์‚ดํŽด๋ณด๋‹ˆ currentUser.staff, is_staff ๋“ฑ์ด ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ์žฅ์†Œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๊ตฌํ˜„๋˜์ง€ ์•Š์„๊นŒ ์ถ”์ธกํ•ด ๋ด…๋‹ˆ๋‹ค.

  1. ํ•ด๋‹น ์ œํ•œ ์กฐ๊ฑด์„ ์™„ํ™”ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜,
  2. ์šฐ๋ฆฌ๊ฐ€ ์ง์ ‘ ์ƒ์„ฑํ•˜๊ณ  ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ„๋„์˜ userGroup(์˜ˆ: TicketsTeam)์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜,
  3. ํ‹ฐ์ผ“ ์„ค์ •์—์„œ ํ‹ฐ์ผ“ ์ ‘๊ทผ ๊ถŒํ•œ์ด ์žˆ๋Š” ๊ทธ๋ฃน์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š”ๆŸ็ง์˜ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฌผ๋ก  3 > 2 > 1์ด์ง€๋งŒ, ์–ด๋–ค ๋ฐฉํ–ฅ์œผ๋กœ ์ง„ํ–‰ํ•˜์‹œ๋“  ํฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ‹ฐ์ผ“ ๊ธฐ๋Šฅ์ด ๋” ๋„๋ฆฌ appeal์„ ๊ฐ–๊ฒŒ ๋˜์–ด, ๊ทธ๋™์•ˆ์˜ ๋…ธ๋ ฅ์ด ๋” ๊ฐ€์น˜ ์žˆ๊ฒŒ ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์‹œ ํ•œ๋ฒˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

1๊ฐœ์˜ ์ข‹์•„์š”

@angus ๋‹˜ - ๋„ค, ํƒœ๊ทธ ๋ฌธ์ œ๋Š” ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๊นจ์ ธ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. Assigned ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ์˜ ์—ฐ๋™์ด ์ „ํ˜€ ์ž‘๋™ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด์ฃ . @Nick_Chomey ๋‹˜๊ณผ ์ €๋„ ์ด ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ ํ•ด ์™”์œผ๋ฉฐ(์ˆ˜๊ฐœ์›” ๋™์•ˆ Pavilion์— ๋ณ„๋„๋กœ ์—ฐ๋ฝํ–ˆ์ง€๋งŒ ์œ ์ตํ•œ ๋‹ต๋ณ€์„ ๋ฐ›์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค), ํ‹ฐ์ผ“์ด ๋ˆ„๊ตฌ์—๊ฒŒ ํ• ๋‹น๋˜์—ˆ๋Š”์ง€ ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ์ƒ๋‹นํžˆ ํฐ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ์ด ๋ฌธ์ œ๊ฐ€ ์ˆ˜์ •๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

1๊ฐœ์˜ ์ข‹์•„์š”

@Nick_Chomey @jerry0 assign ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€์‘ํ•˜๋„๋ก ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฉ”์‹œ์ง€๋ฅผ ๋†“์ณค๋‹ค๋ฉด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค! ์–ด๋–ป๊ฒŒ ์ €ํฌ์—๊ฒŒ ์—ฐ๋ฝ์„ ์‹œ๋„ํ•˜์…จ๋‚˜์š”? ๋ฒ„๊ทธ ๋ฆฌํฌํŠธ๋ฅผ ์ œ์ถœํ•˜์…จ๋‚˜์š” (tickets ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•œ ๋ฆฌํฌํŠธ๋Š” ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค)? ์–ด๋”˜๊ฐ€์—์„œ ์ €์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋ƒˆ๋‚˜์š”? ์•„๋‹ˆ๋ฉด ์ด ํ† ํ”ฝ์˜ ์ด์ „ ๊ฒŒ์‹œ๊ธ€์„ ๋ง์”€ํ•˜์‹œ๋Š” ๊ฑด๊ฐ€์š”?

ํƒœ๊ทธ ๋ฌธ์ œ๊ฐ€ ์ˆ˜์ •๋œ ๊ฒƒ์œผ๋กœ ํ™•์ธ๋˜์—ˆ๊ณ , assign ํ†ตํ•ฉ ๋ฌธ์ œ๋„ ์ฒ˜๋ฆฌํ–ˆ์œผ๋ฏ€๋กœ, ์ด ๋ฌธ์ œ๋ฅผ #customization:plugin์œผ๋กœ ๋‹ค์‹œ ์˜ฎ๊ธฐ๊ฒ ์Šต๋‹ˆ๋‹ค.

6๊ฐœ์˜ ์ข‹์•„์š”

์•ˆ๋…•ํ•˜์„ธ์š”, Angus. ์ด ๋ฌธ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•ด ์ฃผ์…”์„œ ์ •๋ง ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ •๋ง ํ›Œ๋ฅญํ•˜์‹œ๋„ค์š”!!! (๊ทธ๋ฆฌ๊ณ  ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์œผ๋กœ, ์œ„ ๊ธ€์—์„œ ์กฐ์–ธํ•ด ์ฃผ์‹  ๋Œ€๋กœ @ellibereth์—๊ฒŒ ๋ช‡ ๋ฒˆ์ด๋‚˜ ๊ฐœ์ธ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค.) ๋ฒ„๊ทธ ๋ณด๊ณ ๋ฅผ ํ•˜์ง€ ์•Š์€ ์  ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์•ž์œผ๋กœ๋Š” ๊ผญ ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!!

3๊ฐœ์˜ ์ข‹์•„์š”

@angus ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ž‘์—…์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. site.com/admin/tickets๋กœ ์ด๋™ํ•˜๋ฉด ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Redirect user assigned routes to ticket dashboard ์˜ต์…˜์„ ์ฒดํฌํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

๋˜ํ•œ, @jerry0 ๋‹˜์ด ์ง€๋‚œ 6๊ฐœ์›” ๋™์•ˆ ์—ฌ๊ธฐ์—์„œ ์—ฌ๋Ÿฌ ํƒœ๊ทธ๊ฐ€ ๋ถ™์€ ๋Œ“๊ธ€๋“ค์„ ์–ธ๊ธ‰ํ•˜๊ณ  ๊ณ„์…จ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹คโ€ฆ ๋‹น์‹œ ๊ทธ๋ถ„๊ณผ ํŒ€์ด ๋ช‡ ์ฐจ๋ก€ ๋ฌธ์ œ๋ฅผ ์ธ์ง€ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์ ์„ ํ™•์ธํ•ด ์ฃผ์…จ๊ธฐ ๋•Œ๋ฌธ์—, ๊ทธ๊ฒƒ๋งŒ์œผ๋กœ๋„ ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹คโ€ฆ

๋น„ ์Šคํƒœํ”„(์ผ๋ฐ˜ ์‚ฌ์šฉ์ž)๋„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ํ‹ฐ์ผ“(Tickets) ๋ฉ”์ปค๋‹ˆ์ฆ˜๋งŒ ์žˆ๋‹ค๋ฉด, ์„œ๋กœ ๋ฌด๊ด€ํ•œ ์‚ฌ๋žŒ๋“ค์ด ๊ณต๋™ ์ž‘์—…์„ ์ถ”์ ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ๊ฐ€ ํ›จ์”ฌ ์‰ฌ์šธ ํ…๋ฐโ€ฆ :wink:

Discourse๋กœ ์šด์˜๋˜๋Š” ํƒˆ์ค‘์•™ํ™” ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ๋Š” ์ด๊ฒƒ์ด ๊ทนํžˆ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ณ„๋„์˜ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋น„ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค(์‚ฌ์ดํŠธ ์™ธ๋ถ€์—์„œ์˜ ๋งˆ์ฐฐ, ๋น„์šฉ, ๊ณผ์ž‰ ์‚ฌ์–‘ ๋“ฑ). ๋˜ํ•œ ๋ชจ๋“  ์ด์Šˆ๊ฐ€ Github์—์„œ ์ƒ์„ฑ/์ถ”์ ๋˜์–ด์•ผ ํ•  ๋งŒํผ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค(์‚ฌ์ดํŠธ ์™ธ๋ถ€์—์„œ์˜ ๋งˆ์ฐฐ, ์ฝ”๋“œ์™€ ๋ฌด๊ด€ํ•œ ์ด์Šˆ/์ž‘์—… ๋“ฑโ€ฆ). ๊ทธ๋ฆฌ๊ณ  ๋‹น์—ฐํžˆ, ์ด๋Ÿฌํ•œ ์ž‘์—…์€ ๋‹จ์ˆœํžˆ ์ฃผ์ œ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ž˜์„œ ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด์ฃ ).

์ด๋ฏธ Assign ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฃผ์ œ๋ฅผ ๋น„ ์Šคํƒœํ”„(์˜ˆ: ํŠน์ • ๊ทธ๋ฃน์— ์†ํ•œ ์‚ฌ์šฉ์ž)์—๊ฒŒ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ/์ ‘๊ทผ ๊ถŒํ•œ์„ Tickets ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ๋„ ํ™•์žฅํ•˜๋Š” ๊ฒƒ์ด ์ž์—ฐ์Šค๋Ÿฝ๊ณ (๊ทธ๋ฆฌ๊ณ  ์ œ ์ƒ๊ฐ์—๋Š” ์•„์ฃผ ์–ด๋ ต์ง€ ์•Š์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค) ๋‹น์—ฐํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. ์ง์ ‘ ํ•ด๋ณด๊ณ  ์‹ถ์ง€๋งŒ, Discourse ๊ฐœ๋ฐœ ๋ฐฉ์‹์— ๋Œ€ํ•ด ์ž˜ ์•Œ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹คโ€ฆ ์•Œ์•„๋‚ด๋Š” ๋ฐ ๋ฉฐ์น ์€ ๊ฑธ๋ฆด ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ œ๊ฐ€ ์ด์ „ ๊ฒŒ์‹œ๋ฌผ์—์„œ ์ œ์•ˆํ•œ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ Tickets๋ฅผ ์ˆ˜์ •ํ•ด ์ค„ ์ˆ˜ ์žˆ๋„๋ก ์ž ์‹œ ์‚ดํŽด๋ด ์ฃผ์‹œ๊ธธ ์ง„์‹ฌ์œผ๋กœ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ํ•œ ๊ฐ€์ง€ ์ƒ๊ฐ - ๋น„ ์Šคํƒœํ”„๋Š” site.com/admin์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ, ํ‹ฐ์ผ“ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ User Dashboard๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅ/์ ์ ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ• ๋‹น๋œ ๋Œ€์‹œ๋ณด๋“œ๊ฐ€ site.com/u/[username]/activity/tickets์ฒ˜๋Ÿผ ๋˜๋Š” ๋ฐฉ์‹์ด์ฃ .

1๊ฐœ์˜ ์ข‹์•„์š”

ํ™•์ธ์ฐจ ๋‹ค์‹œ ์งˆ๋ฌธ๋“œ๋ฆฌ๋Š”๋ฐ, tickets redirect assigned์ด ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ, ๋ชจ๋“  ๊ฒƒ(์ธ์ˆ˜ ํ†ตํ•ฉ ํฌํ•จ)์ด ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ๋งž๋‚˜์š”? ํ•ด๋‹น ์ด์Šˆ ์ž์ฒด๋Š” ๋‚ด์ผ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋„ค, ์ด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์•ˆ์„ ๊ฒ€ํ† ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋‹จ์œ„ ํ…Œ์ŠคํŠธ(unit tests)๊ฐ€ ํ•„์š”ํ•˜๋ฏ€๋กœ, ์ตœ์†Œ ๋ช‡ ๋‹ฌ์€ ๊ฑธ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ๊ฐ€์žฅ ์šฐ์„ ์ ์œผ๋กœ ๋‹ค๋ค„์•ผ ํ•  ์‚ฌํ•ญ์€ ๊ธฐ์กด ๊ธฐ๋Šฅ์„ ๊ฐ•ํ™”ํ•˜์—ฌ, ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ(์˜ˆ: ์ตœ๊ทผ ๋ฐœ์ƒํ•œ ํƒœ๊ทธ ์ด์Šˆ) ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋” ๋งŽ์€ ๊ด€์‹ฌ์ด ์ ๋ฆฌ์ง€ ์•Š๋Š” ์ฃผ๋œ ์ด์œ ๋Š” ๋‹จ์ˆœํžˆ ์‹œ๊ฐ„์ด ๋ถ€์กฑํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. Ruby on Rails์™€ JavaScript์— ๊ฒฝํ—˜์ด ์žˆ๊ฑฐ๋‚˜ ๋ฐฐ์šฐ๊ธฐ ์˜์ง€๊ฐ€ ์žˆ๋Š” ๊ฐœ๋ฐœ์ž๋ฅผ ์ฐพ์•„์„œ ์ €์—๊ฒŒ ์†Œ๊ฐœํ•ด ์ฃผ์‹ญ์‹œ์˜ค. ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์œ ์ง€๋ณด์ˆ˜์ž๋กœ์„œ ๊ทธ๋“ค์„ ๋ฉ˜ํ† ๋งํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ์†๋‹ด์ฒ˜๋Ÿผ ๋งํ•˜๋“ฏ, ๋ฌผ๊ณ ๊ธฐ ์žก๋Š” ๋ฒ•์„ ๊ฐ€๋ฅด์ณ ์ฃผ๋Š” ๋ฐ ํ•ญ์ƒ ๊ธฐ๊บผ์ด ์‘ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž์ด์‹ ๊ฐ€์š”? Discourse ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜์‹œ๋„๋ก ๊ธฐ๊บผ์ด ๋„์›€์„ ๋“œ๋ฆด ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ทธ๋ ‡๊ฒŒ ํ•˜์‹œ๋ฉด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ธ์ˆ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € ์—ฌ๊ธฐ์„œ ์‹œ์ž‘ํ•˜์‹œ๊ณ , ์™„๋ฃŒ๋˜๋ฉด Tickets Plugin๊ณผ ๊ด€๋ จ๋œ ์ž…๋ฌธ์ž ์ˆ˜์ค€์˜ ์ž‘์—…๋“ค์„ ๋ช‡ ๊ฐ€์ง€ ์„ค์ •ํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

5๊ฐœ์˜ ์ข‹์•„์š”

๋งค์šฐ ๊นŠ์ด ์žˆ๋Š” ๋‹ต๋ณ€์„ ์ฃผ์…”์„œ ์ง„์‹ฌ์œผ๋กœ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

์ด์ œ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์กด์žฌํ•˜๋Š” ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ œ๋“ค์„ ์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€๊ธฐ ์ „์— ๋จผ์ € ํ•ด๊ฒฐํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์„ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๋‹ˆ, ์™„์ „ํžˆ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.

์ €๋Š” ์•„์ง ์ดˆ๋ณด ์ˆ˜์ค€์˜ '๊ฐœ๋ฐœ์žโ€™๋กœ, ์ฃผ๋กœ WordPress(php, mysql, js ์ผ๋ถ€)์— ์ง‘์ค‘ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ช‡ ๋‹ฌ ์ „๋งŒ ํ•ด๋„ ์ด ๊ธฐ๋Šฅ์„ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ํ†ตํ•ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋ฉ˜ํ† ๋ง์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค๋ฉด ์ •๋ง ๊ธฐ๋ปค์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์•ˆํƒ€๊น๊ฒŒ๋„ ์ง€๊ธˆ์€ ์‹œ๊ฐ„์„ ๋‚ด๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. Discourse์— ๋Œ€ํ•œ ์ œ ๊ด€์‹ฌ์€ ์ œ๊ฐ€ ์˜คํ”ˆ์†Œ์Šค ์›น ์ œ์–ด ํŒจ๋„์ธ CyberPanel์„ ์œ„ํ•ด ์ƒˆ๋กœ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์ด์ „ํ•œ ํฌ๋Ÿผ๋“ค ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ด€๋ฆฌ์— ์‹œ๊ฐ„์„ ํ• ์• ํ•˜๊ฑฐ๋‚˜ ๊ทธ์— ๋Œ€ํ•œ ์—ญ๋Ÿ‰์ด๋‚˜ ์˜ํ–ฅ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์—, ๋Œ€๋ถ€๋ถ„ ํ˜ผ์ž ํž˜์œผ๋กœ ์ง„ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค. ์ œ๊ฐ€ 6๊ฐœ์›” ์ „ ๊ฐœ์ž…ํ•˜์—ฌ ์ง€์›, ๋ฌธ์„œ ๋“ฑ ๋ชจ๋“  ๊ฒƒ์„ Discourse๋กœ ์ด์ „ํ•œ ์ดํ›„๋กœ ์ƒํ™ฉ์ด ๋งŽ์ด ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ํผ์ฆ์˜ ๋งˆ์ง€๋ง‰ ์กฐ๊ฐ์€ ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•ด์•ผ ํ•  ์ผ์„ ๋” ์ž˜ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์–ด๋–ค ํ˜•ํƒœ์˜ ํ‹ฐ์ผ“ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„ ๊ฐ–์ถ”๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ด€์‹ฌ ์žˆ์œผ์‹  ๋ถ„๋“ค์€ ์—ฌ๊ธฐ์„œ ํ™•์ธํ•ด ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: https://community.cyberpanel.net/

์–ด์จŒ๋“ , ๋‹ค๋ฅธ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋ฉ˜ํ† ๋ง์„ ์œ„ํ•œ ์—ฌ๋Ÿฌ๋ถ„์˜ ๋„‰๋„‰ํ•œ ์ œ์•ˆ์„ ๋ฐ›์•„๋“ค์ด๊ธธ ์ง„์‹ฌ์œผ๋กœ ๋ฐ”๋ž๋‹ˆ๋‹ค!

2๊ฐœ์˜ ์ข‹์•„์š”

์‚ฌ์ด๋ฒ„ํŒจ๋„์€ ์ˆ˜์ต์„ ์ฐฝ์ถœํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค์ด๋ฏ€๋กœ, ํ•ด๋‹น ์ž‘์—…์„ ์ง€์›ํ•  ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ์š”? ํŒŒ๋นŒ๋ฆฌ์˜จ๋„ ์ด ๋น„์ฆˆ๋‹ˆ์Šค์— ๋Œ€ํ•ด ๊ธฐ๋ปํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

2๊ฐœ์˜ ์ข‹์•„์š”

์ปค๋ฎค๋‹ˆํ‹ฐ ๋ฉค๋ฒ„๋“ค๋กœ๋ถ€ํ„ฐ ํ”ผ๋“œ๋ฐฑ/์ œ์•ˆ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋‚ด์šฉ์€ ์Šคํƒœํ”„๊ฐ€ ๋ชจ๋‘ ๋ณผ ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜์ง€๋งŒ, ๋น„(้ž)์Šคํƒœํ”„ ์ผ๋ฐ˜ ํšŒ์›์—๊ฒŒ๋Š” ์ˆจ๊ฒจ์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์ด ํ•ด๊ฒฐ์ฑ…์ด ๋  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์ง€๋งŒ, ์‹ค์ œ ์ž‘๋™ ๋ฐฉ์‹์ด ์ •ํ™•ํžˆ ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€ ์กฐ๊ธˆ ์• ๋งคํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐœ์ธ ๋ฉ”์‹œ์ง€๋ฅผ ์ž‘์„ฑํ•œ ๋’ค ์ด๋ฅผ ํ‹ฐ์ผ“์œผ๋กœ ํƒœ๊ทธํ•˜๋Š” ๋ฐฉ์‹์ด ๋งž๋‚˜์š”?

์ด ๋ชฉ์ ์— ๋งž๋Š” ๋‹ค๋ฅธ ํ”Œ๋Ÿฌ๊ทธ์ธ๋„ ์žˆ๋‹ค๋ฉด ์ œ์•ˆํ•ด ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ƒˆ ํ‹ฐ์ผ“์„ ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‚˜์š”? ๊ฐ€์ด๋“œ๊ฐ€ ์žˆ์œผ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹คโ€ฆ

1๊ฐœ์˜ ์ข‹์•„์š”

"ํ‹ฐ์ผ“"์—์„œ "์šฐ์„ ์ˆœ์œ„"๋ผ๋Š” ์—ด ์ œ๋ชฉ์„ ํด๋ฆญํ•˜๋ฉด ํ•ด๋‹น ์—ด ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ๋œ ๋ชฉ๋ก์ด ํ‘œ์‹œ๋  ๊ฒƒ์ด๋ผ๊ณ  ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ •๋ ฌ์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•„๋ฌด๋Ÿฐ ํšจ๊ณผ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

URL์— ๋‹ค์Œ์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค:

&order=priority

ํ•˜์ง€๋งŒ ๋ชฉ๋ก์€ ์—ฌ์ „ํžˆ ๋ฌด์ž‘์œ„๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”, @eddie_patently.com :slight_smile:

์ž‘์„ฑํ•˜์‹  ๊ฒŒ์‹œ๊ธ€์„ Tickets Plugin ๐ŸŽŸ ํ† ํ”ฝ์œผ๋กœ ์ด๋™์‹œ์ผฐ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์œ ์ง€๋ณด์ˆ˜ ๋‹ด๋‹น์ž๊ฐ€ ๋ฌธ์ œ๋ฅผ ์ธ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์กฐ์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. :+1:

2๊ฐœ์˜ ์ข‹์•„์š”