Ruby 3.4 Version Upgrade

65 views
Skip to first unread message

Aaron O

unread,
Jun 18, 2025, 1:28:28 PMJun 18
to Canvas LMS Users
As of the 2025-07-02 release, canvas will require ruby 3.4 in production. The oldest release that has all ruby 3.4 related fixes in it is 2025-06-04, so you can upgrade ruby while running 2025-06-04 or 2025-06-18.

If you run on an Ubuntu-based system, we have created a PPA with newer rubies for ubuntu focal, jammy and noble: https://launchpad.net/~instructure/+archive/ubuntu/ruby.

Please let us know either here or in IRC if you have any questions or issues upgrading.

Fred BICT

unread,
Jun 19, 2025, 3:41:43 AMJun 19
to canvas-l...@googlegroups.com
Hi, thanks for the notification.
Regards, Fred B.

Op wo 18 jun 2025 om 19:28 schreef 'Aaron O' via Canvas LMS Users <canvas-l...@googlegroups.com>:
As of the 2025-07-02 release, canvas will require ruby 3.4 in production. The oldest release that has all ruby 3.4 related fixes in it is 2025-06-04, so you can upgrade ruby while running 2025-06-04 or 2025-06-18.

If you run on an Ubuntu-based system, we have created a PPA with newer rubies for ubuntu focal, jammy and noble: https://launchpad.net/~instructure/+archive/ubuntu/ruby.

Please let us know either here or in IRC if you have any questions or issues upgrading.

--

---
You received this message because you are subscribed to the Google Groups "Canvas LMS Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to canvas-lms-use...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/canvas-lms-users/31f4f241-3b40-4212-9560-ff0194e24e87n%40googlegroups.com.

erkany...@gmail.com

unread,
Jun 24, 2025, 2:39:46 AMJun 24
to Canvas LMS Users
Hi Aaron,   Could not find cache store adapter for redis_store for ruby 3.4.0

**İnstalling fresh canvas 07.2025 version with ruby 3.4.0, I had an runtime error from redis.

/var/canvas/vendor/bundle/ruby/3.4.0/gems/activesupport-7.2.2.1/lib/active_support/cache.rb:140:in 'ActiveSupport::Cache.retrieve_store_class': Could not find cache store adapter for redis_store (cannot load such file -- active_support/cache/redis_store) (RuntimeError)**


Thanks for your advance..

Erkan Yetik




18 Haziran 2025 Çarşamba tarihinde saat 20:28:28 UTC+3 itibarıyla Aaron O şunları yazdı:

erkany...@gmail.com

unread,
Jun 24, 2025, 4:03:35 AMJun 24
to Canvas LMS Users
Sory for that. I found my mistake from "cache_store.yml" and "redis. yml" files.

24 Haziran 2025 Salı tarihinde saat 09:39:46 UTC+3 itibarıyla erkany...@gmail.com şunları yazdı:

Andrey Gangan

unread,
Jul 19, 2025, 2:46:45 AMJul 19
to Canvas LMS Users
Seems QTI exporter does not work.
can you check this?

вторник, 24 июня 2025 г. в 11:03:35 UTC+3, erkany...@gmail.com:

Andrey Gangan

unread,
Aug 8, 2025, 3:56:32 AMAug 8
to Canvas LMS Users
Hi Cody,

Can you help?
updated canvas to latest prod release 2025-07-30
now all devs keys is not listed on Site Admin and is not accessible form account 1.
lti tools does not work. Thanks in advance!

also i saw error in log:
[CANVAS_ERRORS] EXCEPTION LOG
NoMethodError (undefined method 'deep_symbolize_keys' for nil):
/home/canvas/public_html/lib/schemas/lti_configuration.rb:64:in 'Schemas::LtiConfiguration.from_internal_lti_configuration'
/home/canvas/public_html/app/models/lti/registration.rb:189:in 'Lti::Registration#canvas_configuration'
/home/canvas/public_html/lib/api/v1/developer_key.rb:69:in 'block in Api::V1::DeveloperKey#developer_key_json'
<internal:kernel>:91:in 'Kernel#tap'
/home/canvas/public_html/lib/api/v1/developer_key.rb:44:in 'Api::V1::DeveloperKey#developer_key_json'
/home/canvas/public_html/lib/api/v1/developer_key.rb:30:in 'block in Api::V1::DeveloperKey#developer_keys_json'
/home/canvas/public_html/lib/api/v1/developer_key.rb:30:in 'Array#map'
/home/canvas/public_html/lib/api/v1/developer_key.rb:30:in 'Api::V1::DeveloperKey#developer_keys_json'
/home/canvas/public_html/app/controllers/developer_keys_controller.rb:225:in 'block (2 levels) in DeveloperKeysController#index'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/actionpack-7.2.2.1/lib/action_controller/metal/mime_responds.rb:224:in 'ActionController::MimeResponds#respond_to'
/home/canvas/public_html/app/controllers/developer_keys_controller.rb:207:in 'DeveloperKeysController#index'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/actionpack-7.2.2.1/lib/action_controller/metal/basic_implicit_render.rb:8:in 'ActionController::BasicImplicitRender#send_action'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/actionpack-7.2.2.1/lib/abstract_controller/base.rb:226:in 'AbstractController::Base#process_action'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/actionpack-7.2.2.1/lib/action_controller/metal/rendering.rb:193:in 'ActionController::Rendering#process_action'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/actionpack-7.2.2.1/lib/abstract_controller/callbacks.rb:261:in 'block in AbstractController::Callbacks#process_action'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/activesupport-7.2.2.1/lib/active_support/callbacks.rb:121:in 'block in ActiveSupport::Callbacks#run_callbacks'
/home/canvas/public_html/app/controllers/application_controller.rb:3287:in 'ApplicationController#manage_live_events_context'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/activesupport-7.2.2.1/lib/active_support/callbacks.rb:130:in 'block in ActiveSupport::Callbacks#run_callbacks'
/home/canvas/public_html/app/controllers/application_controller.rb:973:in 'ApplicationController#compute_http_cost'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/activesupport-7.2.2.1/lib/active_support/callbacks.rb:130:in 'block in ActiveSupport::Callbacks#run_callbacks'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/inst_statsd-3.4.0/lib/inst_statsd/statsd.rb:111:in 'InstStatsd::Statsd.batch'
/home/canvas/public_html/app/controllers/application_controller.rb:968:in 'ApplicationController#batch_statsd'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/activesupport-7.2.2.1/lib/active_support/callbacks.rb:130:in 'block in ActiveSupport::Callbacks#run_callbacks'
/home/canvas/public_html/lib/base/temp_cache.rb:30:in 'TempCache.enable'
/home/canvas/public_html/app/controllers/application_controller.rb:964:in 'ApplicationController#enable_request_cache'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/activesupport-7.2.2.1/lib/active_support/callbacks.rb:130:in 'block in ActiveSupport::Callbacks#run_callbacks'
/home/canvas/public_html/app/controllers/application_controller.rb:960:in 'ApplicationController#set_timezone'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/activesupport-7.2.2.1/lib/active_support/callbacks.rb:130:in 'block in ActiveSupport::Callbacks#run_callbacks'
/home/canvas/public_html/app/controllers/application_controller.rb:950:in 'ApplicationController#set_locale'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/activesupport-7.2.2.1/lib/active_support/callbacks.rb:130:in 'block in ActiveSupport::Callbacks#run_callbacks'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/sentry-rails-5.23.0/lib/sentry/rails/controller_transaction.rb:34:in 'block in Sentry::Rails::ControllerTransaction#sentry_around_action'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/sentry-ruby-5.23.0/lib/sentry/hub.rb:138:in 'Sentry::Hub#with_child_span'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/sentry-ruby-5.23.0/lib/sentry-ruby.rb:515:in 'Sentry.with_child_span'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/sentry-rails-5.23.0/lib/sentry/rails/controller_transaction.rb:18:in 'Sentry::Rails::ControllerTransaction#sentry_around_action'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/activesupport-7.2.2.1/lib/active_support/callbacks.rb:130:in 'block in ActiveSupport::Callbacks#run_callbacks'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/activesupport-7.2.2.1/lib/active_support/callbacks.rb:141:in 'ActiveSupport::Callbacks#run_callbacks'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/actionpack-7.2.2.1/lib/abstract_controller/callbacks.rb:260:in 'AbstractController::Callbacks#process_action'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/actionpack-7.2.2.1/lib/action_controller/metal/rescue.rb:27:in 'ActionController::Rescue#process_action'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/actionpack-7.2.2.1/lib/action_controller/metal/instrumentation.rb:77:in 'block in ActionController::Instrumentation#process_action'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/activesupport-7.2.2.1/lib/active_support/notifications.rb:210:in 'block in ActiveSupport::Notifications.instrument'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/activesupport-7.2.2.1/lib/active_support/notifications/instrumenter.rb:58:in 'ActiveSupport::Notifications::Instrumenter#instrument'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/activesupport-7.2.2.1/lib/active_support/notifications.rb:210:in 'ActiveSupport::Notifications.instrument'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/actionpack-7.2.2.1/lib/action_controller/metal/instrumentation.rb:76:in 'ActionController::Instrumentation#process_action'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/actionpack-7.2.2.1/lib/action_controller/metal/params_wrapper.rb:259:in 'ActionController::ParamsWrapper#process_action'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/activerecord-7.2.2.1/lib/active_record/railties/controller_runtime.rb:39:in 'ActiveRecord::Railties::ControllerRuntime#process_action'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/actionpack-7.2.2.1/lib/abstract_controller/base.rb:163:in 'AbstractController::Base#process'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/actionview-7.2.2.1/lib/action_view/rendering.rb:40:in 'ActionView::Rendering#process'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/actionpack-7.2.2.1/lib/action_controller/metal.rb:252:in 'ActionController::Metal#dispatch'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/actionpack-7.2.2.1/lib/action_controller/metal.rb:335:in 'ActionController::Metal.dispatch'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/actionpack-7.2.2.1/lib/action_dispatch/routing/route_set.rb:67:in 'ActionDispatch::Routing::RouteSet::Dispatcher#dispatch'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/actionpack-7.2.2.1/lib/action_dispatch/routing/route_set.rb:50:in 'ActionDispatch::Routing::RouteSet::Dispatcher#serve'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/actionpack-7.2.2.1/lib/action_dispatch/journey/router.rb:53:in 'block in ActionDispatch::Journey::Router#serve'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/actionpack-7.2.2.1/lib/action_dispatch/journey/router.rb:133:in 'block in ActionDispatch::Journey::Router#find_routes'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/actionpack-7.2.2.1/lib/action_dispatch/journey/router.rb:126:in 'Array#each'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/actionpack-7.2.2.1/lib/action_dispatch/journey/router.rb:126:in 'ActionDispatch::Journey::Router#find_routes'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/actionpack-7.2.2.1/lib/action_dispatch/journey/router.rb:34:in 'ActionDispatch::Journey::Router#serve'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/actionpack-7.2.2.1/lib/action_dispatch/routing/route_set.rb:896:in 'ActionDispatch::Routing::RouteSet#call'
/home/canvas/public_html/gems/plugins/respondus_soap_endpoint/lib/respondus_soap_endpoint/middleware.rb:80:in 'RespondusSoapEndpoint::Middleware#call'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/rack-3.1.16/lib/rack/tempfile_reaper.rb:20:in 'Rack::TempfileReaper#call'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/rack-3.1.16/lib/rack/etag.rb:29:in 'Rack::ETag#call'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/rack3-brotli-1.0.1/lib/rack/brotli/deflater.rb:30:in 'Rack::Brotli::Deflater#call'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/rack-3.1.16/lib/rack/deflater.rb:47:in 'Rack::Deflater#call'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/rack-3.1.16/lib/rack/conditional_get.rb:31:in 'Rack::ConditionalGet#call'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/rack-3.1.16/lib/rack/head.rb:15:in 'Rack::Head#call'
/home/canvas/public_html/app/middleware/request_throttle.rb:70:in 'block in RequestThrottle#call'
/home/canvas/public_html/app/middleware/request_throttle.rb:375:in 'RequestThrottle::LeakyBucket#reserve_capacity'
/home/canvas/public_html/app/middleware/request_throttle.rb:68:in 'RequestThrottle#call'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/actionpack-7.2.2.1/lib/action_dispatch/http/permissions_policy.rb:38:in 'ActionDispatch::PermissionsPolicy::Middleware#call'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/actionpack-7.2.2.1/lib/action_dispatch/http/content_security_policy.rb:38:in 'ActionDispatch::ContentSecurityPolicy::Middleware#call'
/home/canvas/public_html/gems/request_context/lib/request_context/session.rb:28:in 'RequestContext::Session#call'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/rack-session-2.1.0/lib/rack/session/abstract/id.rb:274:in 'Rack::Session::Abstract::Persisted#context'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/rack-session-2.1.0/lib/rack/session/abstract/id.rb:268:in 'Rack::Session::Abstract::Persisted#call'
/home/canvas/public_html/app/middleware/load_account.rb:50:in 'LoadAccount#call'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/actionpack-7.2.2.1/lib/action_dispatch/middleware/cookies.rb:704:in 'ActionDispatch::Cookies#call'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/actionpack-7.2.2.1/lib/action_dispatch/middleware/callbacks.rb:31:in 'block in ActionDispatch::Callbacks#call'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/activesupport-7.2.2.1/lib/active_support/callbacks.rb:101:in 'ActiveSupport::Callbacks#run_callbacks'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/actionpack-7.2.2.1/lib/action_dispatch/middleware/callbacks.rb:30:in 'ActionDispatch::Callbacks#call'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/sentry-rails-5.23.0/lib/sentry/rails/rescued_exception_interceptor.rb:14:in 'Sentry::Rails::RescuedExceptionInterceptor#call'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/actionpack-7.2.2.1/lib/action_dispatch/middleware/debug_exceptions.rb:31:in 'ActionDispatch::DebugExceptions#call'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/sentry-ruby-5.23.0/lib/sentry/rack/capture_exceptions.rb:30:in 'block (2 levels) in Sentry::Rack::CaptureExceptions#call'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/sentry-ruby-5.23.0/lib/sentry/hub.rb:299:in 'Sentry::Hub#with_session_tracking'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/sentry-ruby-5.23.0/lib/sentry-ruby.rb:428:in 'Sentry.with_session_tracking'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/sentry-ruby-5.23.0/lib/sentry/rack/capture_exceptions.rb:21:in 'block in Sentry::Rack::CaptureExceptions#call'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/sentry-ruby-5.23.0/lib/sentry/hub.rb:89:in 'Sentry::Hub#with_scope'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/sentry-ruby-5.23.0/lib/sentry-ruby.rb:408:in 'Sentry.with_scope'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/sentry-ruby-5.23.0/lib/sentry/rack/capture_exceptions.rb:20:in 'Sentry::Rack::CaptureExceptions#call'
/home/canvas/public_html/app/middleware/sentry_trace_scrubber.rb:40:in 'SentryTraceScrubber#call'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/actionpack-7.2.2.1/lib/action_dispatch/middleware/show_exceptions.rb:32:in 'ActionDispatch::ShowExceptions#call'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/railties-7.2.2.1/lib/rails/rack/logger.rb:41:in 'Rails::Rack::Logger#call_app'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/railties-7.2.2.1/lib/rails/rack/logger.rb:29:in 'Rails::Rack::Logger#call'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/actionpack-7.2.2.1/lib/action_dispatch/middleware/remote_ip.rb:96:in 'ActionDispatch::RemoteIp#call'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/request_store-1.7.0/lib/request_store/middleware.rb:19:in 'RequestStore::Middleware#call'
/home/canvas/public_html/gems/request_context/lib/request_context/generator.rb:71:in 'RequestContext::Generator#call'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/rack-3.1.16/lib/rack/method_override.rb:28:in 'Rack::MethodOverride#call'
/home/canvas/public_html/app/middleware/prevent_non_multipart_parse.rb:35:in 'PreventNonMultipartParse#call'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/rack-3.1.16/lib/rack/runtime.rb:24:in 'Rack::Runtime#call'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/actionpack-7.2.2.1/lib/action_dispatch/middleware/executor.rb:16:in 'ActionDispatch::Executor#call'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/rack-3.1.16/lib/rack/sendfile.rb:114:in 'Rack::Sendfile#call'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/actionpack-7.2.2.1/lib/action_dispatch/middleware/ssl.rb:82:in 'ActionDispatch::SSL#call'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/railties-7.2.2.1/lib/rails/engine.rb:535:in 'Rails::Engine#call'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/railties-7.2.2.1/lib/rails/railtie.rb:226:in 'Kernel#public_send'
/home/canvas/public_html/vendor/bundle/ruby/3.4.0/gems/railties-7.2.2.1/lib/rails/railtie.rb:226:in 'Rails::Railtie.method_missing'
/usr/lib/ruby/vendor_ruby/phusion_passenger/rack/thread_handler_extension.rb:107:in 'PhusionPassenger::Rack::ThreadHandlerExtension#process_request'
/usr/lib/ruby/vendor_ruby/phusion_passenger/request_handler/thread_handler.rb:149:in 'PhusionPassenger::RequestHandler::ThreadHandler#accept_and_process_next_request'
/usr/lib/ruby/vendor_ruby/phusion_passenger/request_handler/thread_handler.rb:110:in 'PhusionPassenger::RequestHandler::ThreadHandler#main_loop'
/usr/lib/ruby/vendor_ruby/phusion_passenger/request_handler.rb:419:in 'block (3 levels) in PhusionPassenger::RequestHandler#start_threads'
/usr/lib/ruby/vendor_ruby/phusion_passenger/utils.rb:111:in 'block in PhusionPassenger::Utils#create_thread_and_abort_on_exception'CONTEXT: {tags: {"inst.team" => "unknown", account_id: 10000000000001, user_id: 10000000000001, type: nil, response_code: 500}, extra: {request_id: "406ad528-93eb-414a-9e2e-a3d8252f3757", session_id: "14cfac98fa2b6894d665d067817381c0", meta_headers: "o=developer_keys;n=index;t=Account;i=2;", request_context_id: "406ad528-93eb-414a-9e2e-a3d8252f3757", request_method: :get, format: #<Mime::Type:0x00007f086f84c690 @symbol=:json, @synonyms=["text/x-json", "application/jsonrequest", "application/problem+json"], @string="application/json", @hash=-4428720303847881635>, "HTTP_ACCEPT" => "application/json+canvas-string-ids, application/json, text/plain, */*", "HTTP_ACCEPT_ENCODING" => "gzip, deflate, br, zstd", "HTTP_HOST" => "campus.cdei.es", "HTTP_REFERER" => "https://campus.cdei.es/accounts/site_admin/developer_keys", "HTTP_USER_AGENT" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0", "PATH_INFO" => "/api/v1/accounts/site_admin/developer_keys", "QUERY_STRING" => "?", "REQUEST_METHOD" => "GET", "REQUEST_URI" => "https://campus.cdei.es/api/v1/accounts/site_admin/developer_keys", "SERVER_NAME" => "campus.cdei.es", "SERVER_PORT" => "443", "SERVER_PROTOCOL" => "HTTP/1.1", "REMOTE_ADDR" => "181.115.143.225", "path_parameters" => "{format: \"json\", controller: \"developer_keys\", action: \"index\", account_id: \"site_admin\"}", "query_parameters" => "{}", "request_parameters" => "{}", user_agent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0"}}


суббота, 19 июля 2025 г. в 09:46:45 UTC+3, Andrey Gangan:

Andrey Gangan

unread,
Aug 9, 2025, 8:18:08 AMAug 9
to Canvas LMS Users
Hi Cody,

I fixed this.
migration 20250226232155_add_lti_registration_id_to_context_external_tools did not completed correctly and 1 lti_registration_id was missing in lti_tool_configurations table.
пятница, 8 августа 2025 г. в 10:56:32 UTC+3, Andrey Gangan:

Andrey Gangan

unread,
Aug 10, 2025, 1:36:19 PMAug 10
to Canvas LMS Users

Hello Cody!


Sorry that I write here about it since nobody reply on github.


I hope below information is useful for further development.


  1. feature bbb_avatar cab be made permanently. if disabled BBB plugin does not save settings.

  2. bbb_modal_update can be set permanent too, just no need in 2 versions.

  3. enhanced_gradebook_filters can be made permanent too, gradebooks have issues without enabling it.

  4. issues with Feature settings caching.

  5. Issues with  Feature settings disabling which has lock option.

  6. people_page_modernization makes people page on courses non-functional.


as to point 1,2 and 3 everything is clear in description.


point 4:

According to code I checked on github,  Feature settings saved state created on redis cache.

but after changing state it’s not updated in cache. I stop canvas and clean redis cache the start canvas again.

it’s very annoying to do it each time I need to change something.


point 5:

Some  Feature settings have a lock option for other accounts/subaccounts.

when I  enable one it creates 2 records for it in db feature_flags table for Account 1 and 2

after I disable it, the record for account 2 is removed but stays in ON state for account 1. at the same time the respective setting is not displayed on Account 1  Feature settings list, I can see it in db table and option is still active for Acoount 1 even after cache cleaning .


point 6.

if people_page_modernization Feature setting is enabled course / people page is not fully functional menus is not working near the user name and user role is not possible to change.


maybe something is missing in selfhosted canvas since feature is not marked as beta or preview related to react or graphql?


Thanks in advance


Andrey



суббота, 9 августа 2025 г. в 15:18:08 UTC+3, Andrey Gangan:
Reply all
Reply to author
Forward
0 new messages