La actualización a 2.9.0.beta5 está causando un problema con mi plugin de panel. Algo está provocando un error en una vista del plugin:
Started GET "/pfaffmanager/servers" for 73.147.117.173 at 2022-06-14 17:53:31 +0000
Processing by Pfaffmanager::ServersController#index as HTML
Rendered default/empty.html.erb within layouts/application (Duration: 0.1ms | Allocations: 29)
Rendered layout layouts/application.html.erb (Duration: 21.6ms | Allocations: 7109)
Completed 200 OK in 142ms (Views: 23.0ms | ActiveRecord: 0.0ms | Allocations: 37464)
Started GET "/chat/chat_channels.json" for 73.147.117.173 at 2022-06-14 17:53:31 +0000
Processing by DiscourseChat::ChatChannelsController#index as JSON
Started GET "/presence/get?channels%5B%5D=%2Fchat-user%2Fchat%2F1&channels%5B%5D=%2Fchat-user%2Fcore%2F1" for 73.147.117.173 at 2022-06-14 17:53:31 +0000
Processing by PresenceController#get as JSON
Parameters: {"channels"=>["/chat-user/chat/1", "/chat-user/core/1"]}
Completed 200 OK in 44ms (Views: 1.9ms | ActiveRecord: 0.0ms | Allocations: 5134)
Started GET "/pfaffmanager/servers" for 73.147.117.173 at 2022-06-14 17:53:31 +0000
Completed 200 OK in 94ms (Views: 0.3ms | ActiveRecord: 0.0ms | Allocations: 22124)
Processing by Pfaffmanager::ServersController#index as JSON
Completed 500 Internal Server Error in 113ms (ActiveRecord: 0.0ms | Allocations: 15487)
ActiveSupport::MessageEncryptor::InvalidMessage (ActiveSupport::MessageEncryptor::InvalidMessage)
(eval):9:in `_fast_attributes'
app/controllers/application_controller.rb:543:in `render_json_dump'
app/controllers/application_controller.rb:415:in `block in with_resolved_locale'
app/controllers/application_controller.rb:415: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/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:202:in `call'
Esto parece ocurrir solo en la vista de índice de mi plugin, no en ninguna otra página del plugin ni en Discourse. No estoy seguro de dónde buscar. ¡Qué suerte que ejecuté la actualización primero en mi sitio de staging!
Lo anterior me sugirió que esto tiene que ver con el plugin de chat, pero está sucediendo en mi instancia de desarrollo sin el chat instalado.
¡Vaya, y buscar en Google ActiveSupport::MessageEncryptor::InvalidMessage "fast_attributes" solo devuelve este tema!
¿Hay alguna forma que conozcas de memoria que pueda ignorar este cambio en mi plugin existente con una línea obvia una vez que la sepas en mi plugin.rb?
O tal vez tendré que averiguar qué significa esto.
EDITAR: pero en dev añadir esa línea a config/application.rb no es una solución mágica.
Lo siento. Leí un poco más:
Así que tal vez eso resuelva mi problema inmediato. ¡Gracias de nuevo por tu ayuda! Tal vez lo entienda esta vez.
Bueno, la clave que genero para rails 6 y rails 7 se ve así:
pero cifran las cosas de manera diferente. Tenía la esperanza de que hash_digest_class fuera el problema, pero al menos parece que es el mismo en ambos, pero la cadena cifrada es diferente.
Oh. Maldición. No, no es eso. Mi sitio de producción que funciona está en 7.0.3 y el sitio de staging que está roto también está en 7.0.3. Está cifrando cosas de manera diferente. No puedo decir, y no sé cómo decirlo, si es que el serializador es diferente o el cifrado es diferente.
Mientras tanto, he aprendido que 7.0 admite el cifrado de campos, lo que me permitirá eliminar algo de código personalizado si tan solo pudiera averiguar cómo acceder a mis claves de API cifradas. O tal vez simplemente las deseche y las regenere.
Como muy tarde, estoy obteniendo cifrados como => "SUNBZlRURThEZjdVUG8wTzV1eWk0dz09LS1uRGVSQWtPRU9rc1ZCa1Y1d2pyeU5nPT0=--43eab316e6a9ebafc72d4982347abd9c7f6605db"
con 2.9.0.beta4 se ven como "FwL/GGvrDHOpQ1bnGiI=--kCLbUxMf/XeMaeWF--/feRN+/l1q3EFdKgyIo+7Q=="
k = ActiveSupport::MessageEncryptor.new(KEY, cipher: "aes-256-cbc")
Todavía no entiendo por qué las dos instancias que afirman estar ejecutando 7.0.3 tienen resultados diferentes, pero una buena lectura de la documentación de actualización fue de gran ayuda. ¡Gracias, Gerhard! Fue el empujón que necesitaba.