Locations Plugin 🌍

:+1:t2:

「いいね!」 4

これ、解決しましたか?

「いいね!」 1

ユーザーカードに基づくディレクトリが、ユーザーカード上の Ember プラグインアウトレットを破損させています。そのコンポーネントの所有者にこの問題を報告する必要があります。

「いいね!」 1

ユーザー投稿の下にユーザーの所在地を表示しようとしているのですが、それは機能していますか?

ユーザー投稿?それともユーザーカード?

投稿は構いませんが、カードは不要です。可能ですか?

「いいね!」 2

いいえ、現在はトピックレベルとユーザーの所在地のみをサポートしています。

残念ですね!私のコミュニティでは、投稿者がどこから投稿しているのかを知りたいと切に願っています。

ユーザーカードでも同様に動作しないようですが、こちらは正常に機能していますか?

ありがとうございます。

「いいね!」 1

自動化されていません(プライバシー上の理由も一部あります)。ユーザーはプロフィールで明示的に自分の所在地を設定する必要があります。どの所在地を選択するかはユーザーの判断に委ねられており、したがって、どこに表示されるかもユーザーが決定します。

より複雑な機能をご希望の場合は、おそらくその実装には資金調達されたプロジェクトが必要となり、Marketplace のようなものになります。

「いいね!」 1

ありがとうございます。検討して改めてご連絡します。資金調達済みのプロジェクトにおいて、投稿にユーザー名の下にユーザーの所在地を表示することは可能でしょうか。

「いいね!」 2

つまり、この Locations プラグインを使うと、Follow プラグインも User Card Directory TC も使えないってことですね?ちょっと残念です。3 つとも使えると最高なんですが。なぜ Locations プラグインがそれらと競合してしまうのでしょうか?

「いいね!」 2

私が知る限りでは User Card ディレクトリはそれのみですが、互換性の問題は発生し得ます。

例えば、誰かがモノリシックなテンプレートをオーバーライドする際に、プラグインのアウトレットを保持することを忘れてしまうケースがあります。そのような行為を防ぐことはできません。ただし、主要なプラグイン開発者(私たちや Discourse)は、通常、そのようなことが起こらないよう非常に注意を払っています。

「いいね!」 3

このプラグインを公式プラグインにするための取り組みはありますか?

「いいね!」 1

こんにちは、
最新のアップデートに問題があります。Comparing 83a6ad32...fc0da499 · discourse/discourse · GitHub
ありがとうございます!:slight_smile:

「いいね!」 3

こんにちは、ご報告ありがとうございます。

はい、これは奇妙なケースですね。実際、Locations のせいだと完全には確信していません(ただし、私たちが悪い慣習に従っている可能性はあります?)。

どうやらプラグインの初期化中に Discourse のマイグレーションが発生し、モデル(実際にはシリアライザー)とデータベースが不整合な状態になっていたようです。

解決策は非常にシンプルです:

  1. app.yml から Locations を削除
  2. リビルド(決定的なステップはデータベースのマイグレーションです。それが完了したら…)< – あなたは今ここにいるのかもしれません?
  3. Locations を app.yml に再度追加
  4. リビルド

:tada:

「いいね!」 3

こんにちは、ロバートさん。

素晴らしいです :heart_eyes: ありがとうございます。Locations プラグインのコメントアウトを解除し、リビルドが正常に完了しました。どうやらすべてがうまくいっているようです。迅速なご対応を改めて感謝いたします :slight_smile:

「いいね!」 2

こんにちは、ロバートさん、

残念ながら、最新のアップデートで 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>'

ありがとうございます!:slight_smile:

「いいね!」 3

ご報告ありがとうございます。Pavilion プラグインを使用されている場合は、サポート期間外でのアップグレードはお控えください。破壊的変更が発生した場合、必ずしも対応できない可能性があるためです。可能であれば確認いたします。

「いいね!」 3

@Don 了解しました。今日は時間を取ってこれを修正しました。有料の仕事が山積みでかなり追い詰められているので、早めに片付けておこうと思ったんです :sweat_smile:

正直なところ、修正には時間がかかりました。あの修正点はかなり難解でしたからね :sweat_smile

結果はこちらです: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 参考までに。

「いいね!」 5

こんにちは、ロバートさん。
本当にありがとうございます。お忙しい中、ご尽力いただき感謝申し上げます。:heart:
先ほど更新してテストしましたが、すべて問題なく動作しています!:slight_smile:

「いいね!」 5