Crear publicación con markdown por API devuelve error 500

Hola, cuando intento crear una publicación con una fecha en formato markdown, obtengo un error 500.

¡Este error se activa también a través de una publicación normal en el frontend!

¿Qué estoy haciendo mal?

``` curl -X POST https://forum.example.com/posts.json -H “Api-Key: ” -H “Api-Username: nobodyfrm” -H “Content-Type: application/json” -d ‘{“topic_id”: 553,“raw”: “CSD Limburg `` 2025-05-10T00:00:00Z”}’

Registros:

Message (11 copies reported)

MiniRacer::RuntimeError (TypeError: moment.tz is not a function)
lib/pretty_text.rb:238:in `eval'
lib/pretty_text.rb:238:in `block in markdown'
lib/pretty_text.rb:678:in `block in protect'
lib/pretty_text.rb:678:in `synchronize'
lib/pretty_text.rb:678:in `protect'
lib/pretty_text.rb:175:in `markdown'
lib/pretty_text.rb:301:in `cook'
app/models/post_analyzer.rb:30:in `cook'
app/models/post_analyzer.rb:149:in `cooked_stripped'
app/models/post_analyzer.rb:126:in `raw_links'
app/models/post_analyzer.rb:143:in `link_count'
app/models/post.rb:312:in `public_send'
app/models/post.rb:312:in `block (2 levels) in <class:Post>'
lib/validators/post_validator.rb:141:in `max_links_validator'
lib/validators/post_validator.rb:20:in `validate'
lib/post_creator.rb:179:in `valid?'
lib/post_creator.rb:187:in `create'
lib/new_post_manager.rb:321:in `perform_create_post'
lib/new_post_manager.rb:255:in `perform'
app/controllers/posts_controller.rb:218:in `block in create'
lib/distributed_memoizer.rb:16:in `block in memoize'
lib/distributed_mutex.rb:53:in `block in synchronize'
lib/distributed_mutex.rb:49:in `synchronize'
lib/distributed_mutex.rb:49:in `synchronize'
lib/distributed_mutex.rb:34:in `synchronize'
lib/distributed_memoizer.rb:12:in `memoize'
app/controllers/posts_controller.rb:217:in `create'
app/controllers/application_controller.rb:428:in `block in with_resolved_locale'
app/controllers/application_controller.rb:428:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:35:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:415:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:26:in `call'
lib/middleware/default_headers.rb:13:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/processing_request.rb:12:in `call'
lib/middleware/request_t...

Rastreo de la pila

lib/pretty_text.rb:238:in `eval'
lib/pretty_text.rb:238:in `block in markdown'
lib/pretty_text.rb:678:in `block in protect'
lib/pretty_text.rb:678:in `synchronize'
lib/pretty_text.rb:678:in `protect'
lib/pretty_text.rb:175:in `markdown'
lib/pretty_text.rb:301:in `cook'
app/models/post_analyzer.rb:30:in `cook'
app/models/post_analyzer.rb:149:in `cooked_stripped'
app/models/post_analyzer.rb:126:in `raw_links'
app/models/post_analyzer.rb:143:in `link_count'
app/models/post.rb:312:in `public_send'
app/models/post.rb:312:in `block (2 levels) in <class:Post>'
lib/validators/post_validator.rb:141:in `max_links_validator'
lib/validators/post_validator.rb:20:in `validate'
lib/post_creator.rb:179:in `valid?'
lib/post_creator.rb:187:in `create'
lib/new_post_manager.rb:321:in `perform_create_post'
lib/new_post_manager.rb:255:in `perform'
app/controllers/posts_controller.rb:218:in `block in create'
lib/distributed_memoizer.rb:16:in `block in memoize'
lib/distributed_mutex.rb:53:in `block in synchronize'
lib/distributed_mutex.rb:49:in `synchronize'
lib/distributed_mutex.rb:49:in `synchronize'
lib/distributed_mutex.rb:34:in `synchronize'
lib/distributed_memoizer.rb:12:in `memoize'
app/controllers/posts_controller.rb:217:in `create'
actionpack (7.2.2.1) lib/action_controller/metal/basic_implicit_render.rb:8:in `send_action'
actionpack (7.2.2.1) lib/abstract_controller/base.rb:226:in `process_action'
actionpack (7.2.2.1) lib/action_controller/metal/rendering.rb:193:in `process_action'
actionpack (7.2.2.1) lib/abstract_controller/callbacks.rb:261:in `block in process_action'
activesupport (7.2.2.1) lib/active_support/callbacks.rb:121:in `block in run_callbacks'
app/controllers/application_controller.rb:428:in `block in with_resolved_locale'
app/controllers/application_controller.rb:428:in `with_resolved_locale'
activesupport (7.2.2.1) lib/active_support/callbacks.rb:130:in `block in run_callbacks'
activesupport (7.2.2.1) lib/active_support/callbacks.rb:141:in `run_callbacks'
actionpack (7.2.2.1) lib/abstract_controller/callbacks.rb:260:in `process_action'
actionpack (7.2.2.1) lib/action_controller/metal/rescue.rb:27:in `process_action'
actionpack (7.2.2.1) lib/action_controller/metal/instrumentation.rb:77:in `block in process_action'
activesupport (7.2.2.1) lib/active_support/notifications.rb:210:in `block in instrument'
activesupport (7.2.2.1) lib/active_support/notifications/instrumenter.rb:58:in `instrument'
activesupport (7.2.2.1) lib/active_support/notifications.rb:210:in `instrument'
actionpack (7.2.2.1) lib/action_controller/metal/instrumentation.rb:76:in `process_action'
actionpack (7.2.2.1) lib/action_controller/metal/params_wrapper.rb:259:in `process_action'
activerecord (7.2.2.1) lib/active_record/railties/controller_runtime.rb:39:in `process_action'
actionpack (7.2.2.1) lib/abstract_controller/base.rb:163:in `process'
actionview (7.2.2.1) lib/action_view/rendering.rb:40:in `process'
rack-mini-profiler (4.0.0) lib/mini_profiler/profiling_methods.rb:90:in `block in profile_method'
actionpack (7.2.2.1) lib/action_controller/metal.rb:252:in `dispatch'
actionpack (7.2.2.1) lib/action_controller/metal.rb:335:in `dispatch'
actionpack (7.2.2.1) lib/action_dispatch/routing/route_set.rb:67:in `dispatch'
actionpack (7.2.2.1) lib/action_dispatch/routing/route_set.rb:50:in `serve'
actionpack (7.2.2.1) lib/action_dispatch/journey/router.rb:53:in `block in serve'
actionpack (7.2.2.1) lib/action_dispatch/journey/router.rb:133:in `block in find_routes'
actionpack (7.2.2.1) lib/action_dispatch/journey/router.rb:126:in `each'
actionpack (7.2.2.1) lib/action_dispatch/journey/router.rb:126:in `find_routes'
actionpack (7.2.2.1) lib/action_dispatch/journey/router.rb:34:in `serve'
actionpack (7.2.2.1) lib/action_dispatch/routing/route_set.rb:896:in `call'
lib/middleware/omniauth_bypass_middleware.rb:35:in `call'
rack (2.2.17) lib/rack/tempfile_reaper.rb:15:in `call'
rack (2.2.17) lib/rack/conditional_get.rb:40:in `call'
rack (2.2.17) lib/rack/head.rb:12:in `call'
actionpack (7.2.2.1) lib/action_dispatch/http/permissions_policy.rb:38:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:415:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:26:in `call'
rack (2.2.17) lib/rack/session/abstract/id.rb:266:in `context'
rack (2.2.17) lib/rack/session/abstract/id.rb:260:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/cookies.rb:704:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/callbacks.rb:31:in `block in call'
activesupport (7.2.2.1) lib/active_support/callbacks.rb:101:in `run_callbacks'
actionpack (7.2.2.1) lib/action_dispatch/middleware/callbacks.rb:30:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/debug_exceptions.rb:31:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/show_exceptions.rb:32:in `call'
logster (2.20.1) lib/logster/middleware/reporter.rb:40:in `call'
lib/middleware/default_headers.rb:13:in `call'
railties (7.2.2.1) lib/rails/rack/logger.rb:41:in `call_app'
railties (7.2.2.1) lib/rails/rack/logger.rb:29:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/request_id.rb:33:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
rack (2.2.17) lib/rack/method_override.rb:24:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/executor.rb:16:in `call'
rack (2.2.17) lib/rack/sendfile.rb:110:in `call'
plugins/discourse-prometheus/lib/middleware/metrics.rb:14:in `call'
rack-mini-profiler (4.0.0) lib/mini_profiler.rb:191:in `call'
lib/middleware/processing_request.rb:12:in `call'
message_bus (4.4.1) lib/message_bus/rack/middleware.rb:60:in `call'
lib/middleware/request_tracker.rb:385:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/remote_ip.rb:96:in `call'
railties (7.2.2.1) lib/rails/engine.rb:535:in `call'
railties (7.2.2.1) lib/rails/railtie.rb:226:in `public_send'
railties (7.2.2.1) lib/rails/railtie.rb:226:in `method_missing'
rack (2.2.17) lib/rack/urlmap.rb:74:in `block in call'
rack (2.2.17) lib/rack/urlmap.rb:58:in `each'
rack (2.2.17) lib/rack/urlmap.rb:58:in `call'
unicorn (6.1.0) lib/unicorn/http_server.rb:634:in `process_client'
unicorn (6.1.0) lib/unicorn/http_server.rb:739:in `worker_loop'
unicorn (6.1.0) lib/unicorn/http_server.rb:547:in `spawn_missing_workers'
unicorn (6.1.0) lib/unicorn/http_server.rb:143:in `start'
unicorn (6.1.0) bin/unicorn:128:in `<top (required)>'
vendor/bundle/ruby/3.3.0/bin/unicorn:25:in `load'
vendor/bundle/ruby/3.3.0/bin/unicorn:25:in `<main>'

¿Funciona si lo haces desde la UX? ¿Tienes algún plugin de terceros?

no, no funciona desde la experiencia de usuario/frontend normal.

Plugins:

Nombre URL
Custom wizard Bump version · paviliondev/discourse-custom-wizard@6e1efdd · GitHub
Data explorer Build(deps-dev): Bump rack from 3.1.12 to 3.1.16 (#378) · discourse/discourse-data-explorer@d60c7ac · GitHub
Discourse-Kalender FIX: Destroy calendar popover on navigation (#761) · discourse/discourse-calendar@a034764 · GitHub
Docs Build(deps-dev): Bump rack from 3.1.12 to 3.1.16 (#211) · discourse/discourse-docs@17909a9 · GitHub
Footnote DEV: Add various APIs and outlets to the themes config area (#33385) · discourse/discourse@0ccf792 · GitHub
Journal Merge pull request #8 from fokx/main · paviliondev/discourse-journal@ecbd0ff · GitHub
Locations Merge pull request #127 from davidtaylorhq/raw-handlebars · merefield/discourse-locations@06048dc · GitHub
Prometheus bump rack from 3.1.15 to 3.1.16 (#150) · discourse/discourse-prometheus@a1e0ba6 · GitHub
Signatures Bump rack from 3.1.12 to 3.1.16 (#90) · discourse/discourse-signatures@c0d69bd · GitHub
Discourse Spoiler-Alarm DEV: Add various APIs and outlets to the themes config area (#33385) · discourse/discourse@0ccf792 · GitHub
Discourse – Folgen Bump rack from 3.1.12 to 3.1.16 (#153) · discourse/discourse-follow@240f7f9 · GitHub
Discourse – Gamifizierung Bump rack from 3.1.12 to 3.1.16 (#205) · discourse/discourse-gamification@178cb22 · GitHub
Discourse – Gelöst FIX: Check if user has existing solution despite trust_level=any for … · discourse/discourse-solved@0350b46 · GitHub
Discourse – Wer ist online? Bump rack from 3.1.12 to 3.1.16 (#131) · discourse/discourse-whos-online@7618335 · GitHub

Temas y Componentes

¿En qué versión de Discourse te encuentras?


Tu publicación sin procesar se ve extraña aquí. ¿Puedes confirmar que escribiste esto?

curl -X POST `https://forum.example.com/posts.json` \
-H “Api-Key: <myKey>” \
-H “Api-Username: nobodyfrm” \
-H “Content-Type: application/json” \
-d ‘{“topic_id”: 553,“raw”: “CSD Limburg  `` [date=2025-05-10]`”}’

O comparte un video/captura de pantalla de lo que estás escribiendo en el editor.

tu curl crea una publicación pero la fecha es texto entre comillas, no una fecha.

Encontré mi error: algunos plugins ahora están incluidos en el núcleo de Discourse, por lo que los plugins estaban desactualizados.

Después de arreglar esto, funciona como se esperaba.

2 Me gusta

No estoy seguro de si esta es la solución para mí, ya que me ha sucedido después de actualizar Discourse, por lo tanto, cualquier plugin principal debería haberse actualizado con Discourse en mi caso.

Referencia mi publicación:

Error interno del servidor - Inserción de fecha/hora - Soporte - Discourse Meta

Alguien hizo referencia a esta, pero aunque creo que está relacionada, no sé si es 100% lo mismo.