canvas-lms/gems
Ethan Knapp 75fa608fc9 add a timeout to report DB catchup
refs PFS-19686

Change-Id: Iefe573bca964217f2403e425f635babaed5cfad2
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/289849
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Mark Valentine <mvalentine@instructure.com>
Product-Review: Mark Valentine <mvalentine@instructure.com>
Reviewed-by: Mark Valentine <mvalentine@instructure.com>
2022-04-22 21:35:17 +00:00
..
activesupport-suspend_callbacks Ensure bundled gems don't break with rails 7.0 out 2021-12-16 16:26:36 +00:00
acts_as_list RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
adheres_to_policy RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
attachment_fu Add support for webp images 2022-03-08 23:56:11 +00:00
autoextend replace CANVAS_RAILS6_x variables with CANVAS_RAILS 2022-03-24 18:14:52 +00:00
bookmarked_collection RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
broadcast_policy RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
canvas_breach_mitigation RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
canvas_cache Fix vendored gems for rails 6.1 2022-03-09 17:16:53 +00:00
canvas_cassandra RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
canvas_color RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
canvas_crummy RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
canvas_dynamodb RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
canvas_errors Upgrade Sentry SDKs 2022-01-10 16:58:07 +00:00
canvas_ext RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
canvas_http RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
canvas_i18nliner cutover to the ESM extractor away from AMD's 2022-03-10 21:38:43 +00:00
canvas_kaltura Start logging unexpected responses in kaltura 2022-03-11 02:42:06 +00:00
canvas_mimetype_fu Add support for webp images 2022-03-08 23:56:11 +00:00
canvas_panda_pub RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
canvas_partman Don't break if created_at is nil 2022-03-18 16:50:10 +00:00
canvas_quiz_statistics Fix quiz statistics issue when displaying answer formula 2022-03-28 21:12:41 +00:00
canvas_sanitize Increase depth limit for syllabus 2022-04-20 19:38:27 +00:00
canvas_security use Rails.version check instead of CANVAS_RAILS variable 2022-03-23 20:33:24 +00:00
canvas_slug RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
canvas_sort RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
canvas_stringex RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
canvas_text_helper RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
canvas_time RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
canvas_unzip Stop duplicating files on repeat cartridge imports 2022-02-03 15:07:56 +00:00
config_file RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
csv_diff RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
diigo RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
dr_diff RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
dynamic_settings Cache dynamic settings in request cache 2022-03-07 22:38:17 +00:00
event_stream RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
google_drive RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
html_text_helper RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
i18n_extraction Rails 6.1 basic spec functionality 2022-02-16 17:31:11 +00:00
i18n_tasks fix webpack memory regression from locale change 2022-02-22 14:08:53 +00:00
incoming_mail_processor RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
json_token RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
linked_in RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
live_events keep track of missing live events context 2022-02-02 16:45:46 +00:00
lti-advantage support lti_storage_target in 1.3 login request 2022-02-23 17:36:57 +00:00
lti_outbound RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
multipart RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
paginated_collection RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
plugins add a timeout to report DB catchup 2022-04-22 21:35:17 +00:00
request_context Add Sentry trace ID to X-Canvas-Meta response header 2022-02-15 23:48:15 +00:00
rubocop-canvas lint root_account_id requirements for new tables 2022-01-31 22:56:05 +00:00
stringify_ids RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
tatl_tael RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
turnitin_api RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
twitter RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
utf8_cleaner RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
workflow RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
README.md extract ConfigFile to gem 2021-02-23 21:18:20 +00:00
test_all_gems.sh remove broken vendored gems html reports 2021-06-15 16:53:17 +00:00

README.md

Gems

This folder is a place to extract modular functionality from canvas. Canvas's Gemfile arrangement is enabled to read gems from this path locally without installing from a remote source. This is valuable for a few reasons:

  • it prevents circular dependencies (bundler won't allow it)
  • modularized code cannot bind to specific domain concepts on canvas models
  • gems can have their specs run independently, without needing to load all of canvas, saving iteration time
  • it allows for eventual build optimization via only running specs for the transitive closure of parents depending on a gem where a change is.
  • it gives ENGINES extracted from canvas (see the "engines" directory) a place to reference code shared with canvas without it being packaged into the canvas monolith directly.

There are some tradeoffs:

  • spreads canvas over more subdirectories, giving some mental overhad to traversing the entire codebase.
  • modular tests necessarily don't test integration with canvas concepts, so solid integration tests in the app are still a requirement.
  • total SERIALIZED build time goes up because each gem loads it's specs in a new process rather than all running within an already booted canvas process.

[TODO] eventually write more on whether we feel like those tradeoffs are good ones, and what the best practices are to leverage this pattern for max-gain/min-pain.

Testing

To test all the gems:

cd gems
./test_all_gems.sh

To test an individual gem

Run ./test.sh inside the gem's folder. This is basically the same as:

cd gems/google_drive
bundle
rspec