Ruby on Rails 5.2 - ActionDispatch::DebugLocks

वर्ग ActionDispatch :: DebugLocks




ruby

वर्ग ActionDispatch :: DebugLocks

जनक:
Object

इस मिडलवेयर का उपयोग ऑटोलॉड इंटरलॉक में गतिरोध के निदान के लिए किया जा सकता है।

इसका उपयोग करने के लिए, इसे config/application.rb का उपयोग करके मिडलवेयर स्टैक के शीर्ष के पास डालें:

config.middleware.insert_before Rack::Sendfile, ActionDispatch::DebugLocks

आवेदन को फिर से शुरू करने और गतिरोध की स्थिति को फिर से चालू करने के बाद, /rails/locks वर्तमान में इंटरलॉक के लिए जाने वाले सभी थ्रेड्स का सारांश दिखाएंगे कि वे किस लॉक स्तर को पकड़ रहे हैं या इंतजार कर रहे हैं, और उनका वर्तमान बैकट्रेस है।

आम तौर पर एक गतिरोध इंटरलॉक परस्पर विरोधी किसी अन्य बाहरी लॉक या I / O कॉल को अवरुद्ध करने के कारण होगा। इन्हें स्वचालित रूप से पहचाना नहीं जा सकता है, लेकिन प्रदर्शित बैकट्रैक में दिखाई देना चाहिए।

नोट: इस मिडलवेयर के आउटपुट का स्वरूपण और सामग्री मानव उपभोग के लिए है, और रिलीज के बीच बदलने की उम्मीद की जानी चाहिए।

यह मिडिलवेयर सर्वर के परिचालन विवरण को उजागर करता है, जिसमें कोई अभिगम नियंत्रण नहीं होता है। यह केवल तभी सक्षम होना चाहिए जब उपयोग में हो, और उसके बाद हटा दिया जाए।

पब्लिक क्लास के तरीके

नया (एप्लिकेशन, पथ = "/ रेल / लॉक") स्रोत दिखाएं
# File actionpack/lib/action_dispatch/middleware/debug_locks.rb, line 26
def initialize(app, path = "/rails/locks")
  @app = app
  @path = path
end

सार्वजनिक प्रवृत्ति के तरीके

# File actionpack/lib/action_dispatch/middleware/debug_locks.rb, line 31
def call(env)
  req = ActionDispatch::Request.new env

  if req.get?
    path = req.path_info.chomp("/".freeze)
    if path == @path
      return render_details(req)
    end
  end

  @app.call(env)
end