![]()
์ด๊ฒ์ ํ์ ํ์ จ๋์?
User Card ๊ธฐ๋ฐ ๋๋ ํฐ๋ฆฌ๊ฐ User Card์ Ember ํ๋ฌ๊ทธ์ธ ์์๋ ์ ๊นจ๋จ๋ฆฝ๋๋ค. ํด๋น ์ปดํฌ๋ํธ ์์ ์์๊ฒ ๋ฌธ์ ๋ฅผ ์ ๊ธฐํด์ผ ํฉ๋๋ค.
์ฌ์ฉ์ ๊ฒ์๊ธ ์๋์ ์ฌ์ฉ์ ์์น๋ฅผ ํ์ํ๋ ค๊ณ ํ๋๋ฐ, ์ ๋๋ก ์๋ํ๊ณ ์๋์?
์ฌ์ฉ์ ๊ฒ์๊ธ? ์๋๋ฉด ์ฌ์ฉ์ ์นด๋?
๊ฒ์๋ฌผ์ ๊ด์ฐฎ๊ณ , ์นด๋๋ ๊ด์ฐฎ์ง ์์๋ ๋๋๋ฐ, ๊ฐ๋ฅํ ๊น์?
์๋์, ํ์ฌ๋ ์ฃผ์ (Topic) ์์ค๊ณผ ์ฌ์ฉ์(User) ์์น๋ง ์ง์ํฉ๋๋ค.
์๋, ๊ทธ๊ฑด ์ข ์ ๊ฐ์ด์์! ์ ํฌ ์ปค๋ฎค๋ํฐ๋ ์ฌ๋๋ค์ด ์ด๋์ ๊ฒ์๋ฌผ์ ์ฌ๋ฆฌ๋์ง ์๋ ๋ฐ ํฐ ๊ด์ฌ์ด ์์ด์.
์ฌ์ฉ์ ์นด๋์๋ ์ ์ฉ์ด ์ ๋๋ ๊ฒ ๊ฐ์๋ฐ, ์ฌ์ฉ์ ์นด๋ ์ชฝ์ ์ ์์ ์ผ๋ก ์๋ํ๋์?
๊ฐ์ฌํฉ๋๋ค
์ด ๊ธฐ๋ฅ์ ์๋ํ๋์ด ์์ง ์์ต๋๋ค(์ผ๋ถ๋ฌ ํ๋ผ์ด๋ฒ์ ๋ณดํธ๋ฅผ ์ํด์์ ๋๋ค). ์ฌ์ฉ์๊ฐ ํ๋กํ์์ ์์ ์ ์์น๋ฅผ ์ง์ ์ค์ ํด์ผ ํฉ๋๋ค. ์ด๋ค ์์น๋ฅผ ์ ํํ ์ง, ๋ฐ๋ผ์ ์ด๋์ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ผ์ง๋ ์ ์ ์ผ๋ก ์ฌ์ฉ์์ ํ๋จ์ ๋งก๊ฒจ์ ธ ์์ต๋๋ค.
๋ ์ ๊ตํ ๊ธฐ๋ฅ์ ์ํ์ ๋ค๋ฉด, ํด๋น #marketplace๋ฅผ ๊ตฌํํ๊ธฐ ์ํ ์๊ธ ์ง์ ํ๋ก์ ํธ๊ฐ ํ์ํ ๊ฒ์ ๋๋ค.
๋ค, ๊ฐ์ฌํฉ๋๋ค. ๊ทธ ๋ถ๋ถ์ ํ๋ฒ ๊ฒํ ํด ๋ณด๊ณ ๋ค์ ์ฐ๋ฝ๋๋ฆฌ๊ฒ ์ต๋๋ค. ์๊ธ์ด ์ง์๋ ํ๋ก์ ํธ์ ๊ฒ์๋ฌผ์์ ์ฌ์ฉ์ ์ด๋ฆ ์๋์ ์ฌ์ฉ์ ์์น๋ฅผ ํ์ํด ์ฃผ์ค ์ ์์๊น์?
๊ทธ๋ผ ์ด Locations ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ๊ฒ ๋๋ฉด Follow ํ๋ฌ๊ทธ์ธ์ด๋ User Card Directory TC๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ ๋ป์ด๋ค์? ์ข ์์ฌ์ด๋ฐ์, ์ธ ๊ฐ์ง๋ฅผ ๋ชจ๋ ํจ๊ป ์ฌ์ฉํ ์ ์์ผ๋ฉด ์ข์์ ํ ๋ฐ ๋ง์ด์ฃ . ๋ฌธ์ ๊ฐ ๋ญ๊ฐ์? ์ Locations ํ๋ฌ๊ทธ์ธ์ด ๊ทธ๋ค๊ณผ ์ถฉ๋ํ๋ ๊ฑด๊ฐ์?
์ ๊ฐ ์๋ ๋ฒ์ ๋ด์์๋ User Card ๋๋ ํฐ๋ฆฌ๋ง ํด๋น๋์ง๋ง, ํธํ์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๊ณ ์ค์ ๋ก๋ ๋ฐ์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ๋๊ตฐ๊ฐ๊ฐ ๋ชจ๋๋ฆฌ์ ํ ํ๋ฆฟ์ ์ค๋ฒ๋ผ์ด๋ํ ํ ํ๋ฌ๊ทธ์ธ ์์๋ ์ ์ ์งํ๋ ๊ฒ์ ์์ ์ ์์ต๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ๊ทธ๋ ๊ฒ ํ๋ ๊ฒ์ ๋ฐฉ์งํ ์๋ ์์ต๋๋ค. ๋ค๋ง, ๋ํ ํ๋ฌ๊ทธ์ธ ๊ฐ๋ฐ์ฌ(์ ํฌ์ Discourse)๋ ์ผ๋ฐ์ ์ผ๋ก ๊ทธ๋ ๊ฒ ํ์ง ์๋๋ก ๋งค์ฐ ์ฃผ์ํ๊ณ ์์ต๋๋ค.
์ด ํ๋ฌ๊ทธ์ธ์ ๊ณต์ ํ๋ฌ๊ทธ์ธ์ผ๋ก ๋ง๋ค๊ธฐ ์ํ ๋ ธ๋ ฅ์ด ์๋์?
์๋
ํ์ธ์,
์ต๊ทผ ์
๋ฐ์ดํธ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. Comparing 83a6ad32...fc0da499 ยท discourse/discourse ยท GitHub
๊ฐ์ฌํฉ๋๋ค! ![]()
์๋ ํ์ธ์, ๋ณด๊ณ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
๋ค, ์ด๊ฑด ์ข ํน์ดํ ์ผ์ด์ค์ธ๋ฐ, ์ฌ์ค Locations์ ๋ฌธ์ ๋ผ๊ณ ํ์ ํ์ง ๋ชปํ๊ฒ ์ต๋๋ค(๋ฌผ๋ก ์ฐ๋ฆฌ๊ฐ ์๋ชป๋ ๊ดํ์ ๋ฐ๋ฅด๊ณ ์๋ ๊ฑด ์๋์ง ๋ชจ๋ฅด๊ฒ ๋ค์?!) .
ํ๋ฌ๊ทธ์ธ ์ด๊ธฐํ ๊ณผ์ ์์ Discourse ๋ง์ด๊ทธ๋ ์ด์ ์ด ๋ชจ๋ธ(์ค์ ๋ก๋ Serializer)๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ผ๊ด์ฑ ์๋ ์ํ๊ฐ ๋๋๋ก ๋ง๋๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ ๋ง ๊ฐ๋จํฉ๋๋ค:
- app.yml์์ Locations๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
- ๋ค์ ๋น๋ํฉ๋๋ค(ํต์ฌ ๋จ๊ณ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง์ด๊ทธ๋ ์ด์ ์ ๋๋ค. ๊ทธ ์์ ์ด ์๋ฃ๋๋ฉด โฆ) < โ ์ฌ๊ธฐ์ ๋งํ ๊ณ์ ๊ฑด ์๋๊ฐ์?
- app.yml์ Locations๋ฅผ ๋ค์ ์ถ๊ฐํฉ๋๋ค.
- ๋ค์ ๋น๋ํฉ๋๋ค.
![]()
๋ก๋ฒํธ๋, ์๋ ํ์ธ์.
์ ๋ง ํ๋ฅญํด์
Locations ํ๋ฌ๊ทธ์ธ์ ์ฃผ์ ํด์ ํ๊ณ , ๋ฆฌ๋น๋๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์คํ๋์์ต๋๋ค. ๋ชจ๋ ๊ฒ์ด ์์ฃผ ์ ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋น ๋ฅธ ๋์ ์ฃผ์
์ ๋ค์ ํ๋ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค ![]()
๋ก๋ฒํธ๋,
์ต๊ทผ ์
๋ฐ์ดํธ๊ฐ Locations ํ์ด์ง์ /u/user-map?period=location ๋ผ์ฐํธ๋ฅผ ์ฐจ๋จํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ํน์ ์ด ์ปค๋ฐ ๋๋ฌธ์ผ๊น์? FIX: Always serialize the correct attributes for DirectoryItems (#13510) ยท discourse/discourse@60a7673 ยท GitHub
๋ธ๋ผ์ฐ์ ์ฝ์๊ณผ ๋ก๊ทธ์๋ ์ผ๋ถ ์ค๋ฅ๊ฐ ๋๊ณ ์์ต๋๋ค.
์ ๋ณด
NoMethodError (undefined method `each' for nil:NilClass)
app/serializers/directory_item_serializer.rb:41:in `attributes'
app/controllers/application_controller.rb:494:in `serialize_data'
app/controllers/application_controller.rb:397:in `block in with_resolved_locale'
app/controllers/application_controller.rb:397: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:355:in `call'
config/initializers/008-rack-cors.rb:25: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:177:in `call'
๋ฐฑํธ๋ ์ด์ค
app/serializers/directory_item_serializer.rb:41:in `attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:480:in `_serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:359:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:89:in `block in _serializable_array'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:79:in `map'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:79:in `_serializable_array'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:73:in `serializable_array'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:53:in `as_json'
app/controllers/application_controller.rb:494:in `serialize_data'
plugins/discourse-locations/lib/users_map.rb:15:in `index'
actionpack (6.1.3.2) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
actionpack (6.1.3.2) lib/abstract_controller/base.rb:228:in `process_action'
actionpack (6.1.3.2) lib/action_controller/metal/rendering.rb:30:in `process_action'
actionpack (6.1.3.2) lib/abstract_controller/callbacks.rb:42:in `block in process_action'
activesupport (6.1.3.2) lib/active_support/callbacks.rb:117:in `block in run_callbacks'
app/controllers/application_controller.rb:397:in `block in with_resolved_locale'
i18n (1.8.10) lib/i18n.rb:314:in `with_locale'
app/controllers/application_controller.rb:397:in `with_resolved_locale'
activesupport (6.1.3.2) lib/active_support/callbacks.rb:126:in `block in run_callbacks'
activesupport (6.1.3.2) lib/active_support/callbacks.rb:137:in `run_callbacks'
actionpack (6.1.3.2) lib/abstract_controller/callbacks.rb:41:in `process_action'
actionpack (6.1.3.2) lib/action_controller/metal/rescue.rb:22:in `process_action'
actionpack (6.1.3.2) lib/action_controller/metal/instrumentation.rb:34:in `block in process_action'
activesupport (6.1.3.2) lib/active_support/notifications.rb:203:in `block in instrument'
activesupport (6.1.3.2) lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport (6.1.3.2) lib/active_support/notifications.rb:203:in `instrument'
actionpack (6.1.3.2) lib/action_controller/metal/instrumentation.rb:33:in `process_action'
actionpack (6.1.3.2) lib/action_controller/metal/params_wrapper.rb:249:in `process_action'
activerecord (6.1.3.2) lib/active_record/railties/controller_runtime.rb:27:in `process_action'
actionpack (6.1.3.2) lib/abstract_controller/base.rb:165:in `process'
actionview (6.1.3.2) lib/action_view/rendering.rb:39:in `process'
rack-mini-profiler (2.3.2) lib/mini_profiler/profiling_methods.rb:111:in `block in profile_method'
actionpack (6.1.3.2) lib/action_controller/metal.rb:190:in `dispatch'
actionpack (6.1.3.2) lib/action_controller/metal.rb:254:in `dispatch'
actionpack (6.1.3.2) lib/action_dispatch/routing/route_set.rb:50:in `dispatch'
actionpack (6.1.3.2) lib/action_dispatch/routing/route_set.rb:33:in `serve'
actionpack (6.1.3.2) lib/action_dispatch/journey/router.rb:50:in `block in serve'
actionpack (6.1.3.2) lib/action_dispatch/journey/router.rb:32:in `each'
actionpack (6.1.3.2) lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack (6.1.3.2) 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.3.2) lib/action_dispatch/http/permissions_policy.rb:22:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:355:in `call'
config/initializers/008-rack-cors.rb:25: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.3.2) lib/action_dispatch/middleware/cookies.rb:689:in `call'
actionpack (6.1.3.2) lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport (6.1.3.2) lib/active_support/callbacks.rb:98:in `run_callbacks'
actionpack (6.1.3.2) lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack (6.1.3.2) lib/action_dispatch/middleware/actionable_exceptions.rb:18:in `call'
actionpack (6.1.3.2) lib/action_dispatch/middleware/debug_exceptions.rb:29:in `call'
actionpack (6.1.3.2) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
logster (2.9.6) lib/logster/middleware/reporter.rb:43:in `call'
railties (6.1.3.2) lib/rails/rack/logger.rb:37:in `call_app'
railties (6.1.3.2) 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.3.2) lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
actionpack (6.1.3.2) 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.3.2) lib/action_dispatch/middleware/executor.rb:14:in `call'
rack (2.2.3) lib/rack/sendfile.rb:110:in `call'
actionpack (6.1.3.2) lib/action_dispatch/middleware/host_authorization.rb:92:in `call'
rack-mini-profiler (2.3.2) lib/mini_profiler/profiler.rb:384:in `call'
message_bus (3.3.6) lib/message_bus/rack/middleware.rb:61:in `call'
lib/middleware/request_tracker.rb:177:in `call'
railties (6.1.3.2) lib/rails/engine.rb:539:in `call'
railties (6.1.3.2) lib/rails/railtie.rb:207:in `public_send'
railties (6.1.3.2) 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:23:in `load'
vendor/bundle/ruby/2.7.0/bin/unicorn:23:in `<main>'
๊ฐ์ฌํฉ๋๋ค! ![]()
๋ฆฌํฌํธ ๊ฐ์ฌํฉ๋๋ค. Pavilion ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉ ์ค์ธ ๊ฒฝ์ฐ, ๊นจ์ง ๋ณ๊ฒฝ ์ฌํญ(Breaking Changes)์ ํด๊ฒฐํ๊ธฐ ์ํด ํญ์ ์ง์ํ ์ ์๋ ์ํฉ์ด ์๋๋ฏ๋ก, ์ง์ ๊ธฐ๊ฐ ๋ฐ์์ ์ ๊ทธ๋ ์ด๋๋ฅผ ํผํด ์ฃผ์๊ธฐ ๋ฐ๋๋๋ค. ๊ฐ๋ฅํ ๋ ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค.
@Don ๋ค, ์ค๋ ์๊ฐ์ ๋ด์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. ์ ๋ฃ ์์
๋๋ฌธ์ ์๊ฐ์ด ์ข ๊ธํด์ ์ด ๋ฌธ์ ๋ฅผ ๋จผ์ ์ฒ๋ฆฌํ๋ ๊ฒ ์ข๊ฒ ๋ค๊ณ ์๊ฐํ๊ฑฐ๋ ์ ![]()
์์งํ ๋ง์๋๋ฆฌ๋ฉด, ์๊ฐ์ด ์ข ๊ฑธ๋ ธ์ต๋๋ค. ๊ทธ ๋ณ๊ฒฝ ์ฌํญ๋ค์ด ๊ฝค ๋ํดํ๊ฑฐ๋ ์! ![]()
๊ฒฐ๊ณผ๋ ์ด๋ ์ต๋๋ค: COMPATIBILITY: fix for recent major changes to user directory code ยท merefield/discourse-locations@8a16b16 ยท GitHub
๋ถ์์ ์ผ๋ก, ์ง๋ ฌํํ ๋ฐ์ดํฐ ์์ ์ค์ด๊ธฐ ์ํด ์๋ก์ด ๋์์ธ์ ํ์ฉํ๋ ์ถ๊ฐ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฃ์๊ธฐ ๋๋ฌธ์ ์ด์ ๋ณด๋ค ์ฝ๊ฐ ๋ ๋น ๋ฅผ ์๋ ์์ต๋๋ค: cut down unnecessary data ยท merefield/discourse-locations@66d0120 ยท GitHub
@markvanlan ์ฐธ๊ณ ํ์ธ์.
๋ก๋ฒํธ๋,
์ ๋ง ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์๊ฐ ๋ด์ด ์์
ํด ์ฃผ์
์ ์ ๋ง ๊ฐ์ฌํฉ๋๋ค. ![]()
๋ฐฉ๊ธ ์
๋ฐ์ดํธํ๊ณ ํ
์คํธํด ๋ดค๋๋ฐโฆ ๋ชจ๋ ๊ฒ์ด ์๋ฒฝํ๊ฒ ์๋ํฉ๋๋ค! ![]()

