# Job 예외: DiscourseActivityPub::AP::Link 인스턴스에 'json=' 메서드가 정의되지 않았습니다

**URL:** <https://meta.discourse.org/t/job-exception-undefined-method-json-for-an-instance-of-discourseactivitypub-link/415139>\
**Category:** Bug\
**Tags:** activitypub\
**Created:** [10월 20, 2026, 11:37오전 UTC](https://meta.discourse.org/t/job-exception-undefined-method-json-for-an-instance-of-discourseactivitypub-link/415139 "2026-10-20T11:37:29Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)\
**Post date:** [10월 20, 2026, 11:37오전 UTC](https://meta.discourse.org/t/job-exception-undefined-method-json-for-an-instance-of-discourseactivitypub-link/415139/1 "2026-10-20T11:37:29Z")

</div>

Discourse 카테고리 팔로우 기능이 이제 작동하지 않는 것 같습니다

```plaintext
Job exception: undefined method 'json=' for an instance of DiscourseActivityPub::AP::Link

```

> **백트레이스**
>
> ```plaintext
> Message (19 copies reported)
> 
> Job exception: undefined method 'json=' for an instance of DiscourseActivityPub::AP::Link
> 
> Backtrace
> 
> /var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/a_p/object.rb:194:in 'DiscourseActivityPub::AP::Object.factory'
> /var/www/discourse/plugins/discourse-activity-pub/plugin.rb:857:in 'block (4 levels) in Plugin::Instance#activate!'
> /var/www/discourse/plugins/discourse-activity-pub/plugin.rb:856:in 'Array#each'
> /var/www/discourse/plugins/discourse-activity-pub/plugin.rb:856:in 'block (3 levels) in Plugin::Instance#activate!'
> activerecord-8.1.4/lib/active_record/connection_adapters/abstract/database_statements.rb:376:in 'ActiveRecord::ConnectionAdapters::DatabaseStatements#transaction'
> activerecord-8.1.4/lib/active_record/transactions.rb:234:in 'block (2 levels) in ActiveRecord::Transactions::ClassMethods#transaction'
> activerecord-8.1.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:487:in 'ActiveRecord::ConnectionAdapters::ConnectionPool#with_pool_transaction_isolation_level'
> activerecord-8.1.4/lib/active_record/transactions.rb:233:in 'block in ActiveRecord::Transactions::ClassMethods#transaction'
> activerecord-8.1.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:459:in 'ActiveRecord::ConnectionAdapters::ConnectionPool#with_connection'
> activerecord-8.1.4/lib/active_record/connection_handling.rb:313:in 'ActiveRecord::ConnectionHandling#with_connection'
> activerecord-8.1.4/lib/active_record/transactions.rb:232:in 'ActiveRecord::Transactions::ClassMethods#transaction'
> /var/www/discourse/plugins/discourse-activity-pub/plugin.rb:817:in 'block (2 levels) in Plugin::Instance#activate!'
> /var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/plugin/instance.rb:10:in 'block in DiscourseActivityPub::Plugin::Instance#activity_pub_on'
> /var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/a_p/handlers.rb:76:in 'block in DiscourseActivityPub::AP::Handlers::ClassMethods#apply_handlers'
> /var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/a_p/handlers.rb:74:in 'Array#all?'
> /var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/a_p/handlers.rb:74:in 'DiscourseActivityPub::AP::Handlers::ClassMethods#apply_handlers'
> /var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/a_p/handlers.rb:24:in 'DiscourseActivityPub::AP::Handlers#apply_handlers'
> /var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/a_p/object.rb:225:in 'DiscourseActivityPub::AP::Object.resolve_and_store'
> /var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/a_p/activity.rb:136:in 'DiscourseActivityPub::AP::Activity#process_actor_and_object'
> /var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/a_p/activity.rb:56:in 'DiscourseActivityPub::AP::Activity#process_activity'
> /var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/a_p/activity.rb:36:in 'block in DiscourseActivityPub::AP::Activity#perform_transactions'
> activerecord-8.1.4/lib/active_record/connection_adapters/abstract/transaction.rb:648:in 'block in ActiveRecord::ConnectionAdapters::TransactionManager#within_new_transaction'
> activesupport-8.1.4/lib/active_support/concurrency/null_lock.rb:9:in 'ActiveSupport::Concurrency::NullLock#synchronize'
> activerecord-8.1.4/lib/active_record/connection_adapters/abstract/transaction.rb:645:in 'ActiveRecord::ConnectionAdapters::TransactionManager#within_new_transaction'
> activerecord-8.1.4/lib/active_record/connection_adapters/abstract/database_statements.rb:386:in 'ActiveRecord::ConnectionAdapters::DatabaseStatements#within_new_transaction'
> activerecord-8.1.4/lib/active_record/connection_adapters/abstract/database_statements.rb:378:in 'ActiveRecord::ConnectionAdapters::DatabaseStatements#transaction'
> activerecord-8.1.4/lib/active_record/transactions.rb:234:in 'block (2 levels) in ActiveRecord::Transactions::ClassMethods#transaction'
> activerecord-8.1.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:487:in 'ActiveRecord::ConnectionAdapters::ConnectionPool#with_pool_transaction_isolation_level'
> activerecord-8.1.4/lib/active_record/transactions.rb:233:in 'block in ActiveRecord::Transactions::ClassMethods#transaction'
> activerecord-8.1.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:465:in 'ActiveRecord::ConnectionAdapters::ConnectionPool#with_connection'
> activerecord-8.1.4/lib/active_record/connection_handling.rb:313:in 'ActiveRecord::ConnectionHandling#with_connection'
> activerecord-8.1.4/lib/active_record/transactions.rb:232:in 'ActiveRecord::Transactions::ClassMethods#transaction'
> /var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/a_p/activity.rb:34:in 'DiscourseActivityPub::AP::Activity#perform_transactions'
> /var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/a_p/activity.rb:26:in 'DiscourseActivityPub::AP::Activity#process'
> /var/www/discourse/plugins/discourse-activity-pub/app/jobs/regular/discourse_activity_pub/process.rb:16:in 'block in Jobs::DiscourseActivityPub::Process#execute'
> /var/www/discourse/lib/distributed_mutex.rb:53:in 'block in DistributedMutex#synchronize'
> /var/www/discourse/lib/distributed_mutex.rb:49:in 'Thread::Mutex#synchronize'
> /var/www/discourse/lib/distributed_mutex.rb:49:in 'DistributedMutex#synchronize'
> /var/www/discourse/lib/distributed_mutex.rb:34:in 'DistributedMutex.synchronize'
> /var/www/discourse/plugins/discourse-activity-pub/app/jobs/regular/discourse_activity_pub/process.rb:9:in 'Jobs::DiscourseActivityPub::Process#execute'
> /var/www/discourse/app/jobs/base.rb:313:in 'block (2 levels) in Jobs::Base#perform'
> rails_multisite-9.0.0/lib/rails_multisite/connection_management/null_instance.rb:54:in 'RailsMultisite::ConnectionManagement::NullInstance#with_connection'
> rails_multisite-9.0.0/lib/rails_multisite/connection_management.rb:23:in 'RailsMultisite::ConnectionManagement.with_connection'
> /var/www/discourse/app/jobs/base.rb:300:in 'block in Jobs::Base#perform'
> /var/www/discourse/app/jobs/base.rb:297:in 'Array#each'
> /var/www/discourse/app/jobs/base.rb:297:in 'Jobs::Base#perform'
> sidekiq-7.3.10/lib/sidekiq/processor.rb:220:in 'Sidekiq::Processor#execute_job'
> sidekiq-7.3.10/lib/sidekiq/processor.rb:185:in 'block (4 levels) in Sidekiq::Processor#process'
> sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:180:in 'Sidekiq::Middleware::Chain#traverse'
> sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:183:in 'block in Sidekiq::Middleware::Chain#traverse'
> /var/www/discourse/lib/sidekiq/suppress_user_email_errors.rb:6:in 'Sidekiq::SuppressUserEmailErrors#call'
> sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:182:in 'Sidekiq::Middleware::Chain#traverse'
> sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:183:in 'block in Sidekiq::Middleware::Chain#traverse'
> /var/www/discourse/lib/sidekiq/discourse_event.rb:6:in 'Sidekiq::DiscourseEvent#call'
> sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:182:in 'Sidekiq::Middleware::Chain#traverse'
> sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:183:in 'block in Sidekiq::Middleware::Chain#traverse'
> /var/www/discourse/lib/sidekiq/pausable.rb:136:in 'Sidekiq::Pausable#call'
> sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:182:in 'Sidekiq::Middleware::Chain#traverse'
> sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:183:in 'block in Sidekiq::Middleware::Chain#traverse'
> sidekiq-7.3.10/lib/sidekiq/job/interrupt_handler.rb:9:in 'Sidekiq::Job::InterruptHandler#call'
> sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:182:in 'Sidekiq::Middleware::Chain#traverse'
> sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:183:in 'block in Sidekiq::Middleware::Chain#traverse'
> sidekiq-7.3.10/lib/sidekiq/metrics/tracking.rb:26:in 'Sidekiq::Metrics::ExecutionTracker#track'
> sidekiq-7.3.10/lib/sidekiq/metrics/tracking.rb:134:in 'Sidekiq::Metrics::Middleware#call'
> sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:182:in 'Sidekiq::Middleware::Chain#traverse'
> sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:173:in 'Sidekiq::Middleware::Chain#invoke'
> sidekiq-7.3.10/lib/sidekiq/processor.rb:184:in 'block (3 levels) in Sidekiq::Processor#process'
> sidekiq-7.3.10/lib/sidekiq/processor.rb:145:in 'block (6 levels) in Sidekiq::Processor#dispatch'
> sidekiq-7.3.10/lib/sidekiq/job_retry.rb:118:in 'Sidekiq::JobRetry#local'
> sidekiq-7.3.10/lib/sidekiq/processor.rb:144:in 'block (5 levels) in Sidekiq::Processor#dispatch'
> sidekiq-7.3.10/lib/sidekiq/config.rb:39:in 'block in <class:Config>'
> sidekiq-7.3.10/lib/sidekiq/processor.rb:139:in 'block (4 levels) in Sidekiq::Processor#dispatch'
> sidekiq-7.3.10/lib/sidekiq/processor.rb:281:in 'Sidekiq::Processor#stats'
> sidekiq-7.3.10/lib/sidekiq/processor.rb:134:in 'block (3 levels) in Sidekiq::Processor#dispatch'
> sidekiq-7.3.10/lib/sidekiq/job_logger.rb:15:in 'Sidekiq::JobLogger#call'
> sidekiq-7.3.10/lib/sidekiq/processor.rb:133:in 'block (2 levels) in Sidekiq::Processor#dispatch'
> sidekiq-7.3.10/lib/sidekiq/job_retry.rb:85:in 'Sidekiq::JobRetry#global'
> sidekiq-7.3.10/lib/sidekiq/processor.rb:132:in 'block in Sidekiq::Processor#dispatch'
> sidekiq-7.3.10/lib/sidekiq/job_logger.rb:40:in 'Sidekiq::JobLogger#prepare'
> sidekiq-7.3.10/lib/sidekiq/processor.rb:131:in 'Sidekiq::Processor#dispatch'
> sidekiq-7.3.10/lib/sidekiq/processor.rb:183:in 'block (2 levels) in Sidekiq::Processor#process'
> sidekiq-7.3.10/lib/sidekiq/processor.rb:182:in 'Thread.handle_interrupt'
> sidekiq-7.3.10/lib/sidekiq/processor.rb:182:in 'block in Sidekiq::Processor#process'
> sidekiq-7.3.10/lib/sidekiq/processor.rb:181:in 'Thread.handle_interrupt'
> sidekiq-7.3.10/lib/sidekiq/processor.rb:181:in 'Sidekiq::Processor#process'
> sidekiq-7.3.10/lib/sidekiq/processor.rb:86:in 'Sidekiq::Processor#process_one'
> sidekiq-7.3.10/lib
> 
> ```

셀프 호스팅 환경이며, 2026.10.0-latest (+458 commits, 어제 밤에 업그레이드됨)를 사용하고 있습니다. 직전 업그레이드 전까지는 정상적으로 작동했습니다.

---

<div class="post-metadata">

**Author:** ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)\
**Post date:** [10월 20, 2026, 12:22오후 UTC](https://meta.discourse.org/t/job-exception-undefined-method-json-for-an-instance-of-discourseactivitypub-link/415139/3 "2026-10-20T12:22:45Z")

</div>

이미지에 대해 죄송합니다. 그런데 이거 관련 있는 건가요?

 ![IMG_3470](https://global.discourse-cdn.com/meta/original/4X/4/3/b/43bdb0a52700f28ccc9b1ff88648671be67f8b39.jpeg)

---

<div class="post-metadata">

**Author:** ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)\
**Post date:** [10월 20, 2026, 5:25오후 UTC](https://meta.discourse.org/t/job-exception-undefined-method-json-for-an-instance-of-discourseactivitypub-link/415139/4 "2026-10-20T17:25:42Z")

</div>

Mastodon에서 Discourse로의 연동이 Mastodon 인스턴스가 5.0.0으로 업데이트되면 깨지는 것 같습니다. 그렇다면 결국 이것은 Mastodon의 버그일 수도 있겠네요… 제 실력으로는 어떻게 되는지 판단이 안 섭니다.
