diff options
-rw-r--r-- | config/initializers/goldiloader.rb | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/config/initializers/goldiloader.rb b/config/initializers/goldiloader.rb new file mode 100644 index 00000000000..2a5f9c9dbbc --- /dev/null +++ b/config/initializers/goldiloader.rb @@ -0,0 +1,25 @@ +module Goldiloader + module AssociationLoader + module LimitPreloading + PreloadingLimitExceeded = Class.new(StandardError) + + private + + def eager_load(models, association_name) + if Gitlab::Sentry.enabled? && models.count > 100 + Gitlab::Sentry.context + + Raven.capture_exception(PreloadingLimitExceeded.new("More than 100 models preloaded for #{models.first.class}.#{association_name}")) + return + end + + super + rescue => e + Raven.capture_exception(e) + end + end + + prepend LimitPreloading + singleton_class.prepend LimitPreloading + end +end |