Bläddra i källkod

Change root Chewy strategy to emit a warning instead of erroring out in production mode (#24327)

Claire 1 år sedan
förälder
incheckning
4eaa6d58b2
3 ändrade filer med 14 tillägg och 0 borttagningar
  1. 1 0
      config/application.rb
  2. 1 0
      config/initializers/chewy.rb
  3. 12 0
      lib/chewy/strategy/bypass_with_warning.rb

+ 1 - 0
config/application.rb

@@ -39,6 +39,7 @@ require_relative '../lib/public_file_server_middleware'
 require_relative '../lib/devise/two_factor_ldap_authenticatable'
 require_relative '../lib/devise/two_factor_pam_authenticatable'
 require_relative '../lib/chewy/strategy/mastodon'
+require_relative '../lib/chewy/strategy/bypass_with_warning'
 require_relative '../lib/webpacker/manifest_extensions'
 require_relative '../lib/webpacker/helper_extensions'
 require_relative '../lib/rails/engine_extensions'

+ 1 - 0
config/initializers/chewy.rb

@@ -19,6 +19,7 @@ Chewy.settings = {
 # cycle, which takes care of checking if Elasticsearch is enabled
 # or not. However, mind that for the Rails console, the :urgent
 # strategy is set automatically with no way to override it.
+Chewy.root_strategy              = :bypass_with_warning if Rails.env.production?
 Chewy.request_strategy           = :mastodon
 Chewy.use_after_commit_callbacks = false
 

+ 12 - 0
lib/chewy/strategy/bypass_with_warning.rb

@@ -0,0 +1,12 @@
+# frozen_string_literal: true
+
+module Chewy
+  class Strategy
+    class BypassWithWarning < Base
+      def update(...)
+        Rails.logger.warn 'Chewy update without a root strategy' unless @warning_issued
+        @warning_issued = true
+      end
+    end
+  end
+end