जब मैं कंसोल में प्रश्नों (जैसे MyModel.where(...)
या record.associated_things
) को चलाता हूं, तो मैं वास्तविक डेटाबेस प्रश्नों को कैसे चला सकता हूं, इसलिए मैं समझ सकता हूं कि क्या हो रहा है?
जब मैं कंसोल में प्रश्नों (जैसे MyModel.where(...)
या record.associated_things
) को चलाता हूं, तो मैं वास्तविक डेटाबेस प्रश्नों को कैसे चला सकता हूं, इसलिए मैं समझ सकता हूं कि क्या हो रहा है?
जवाबों:
इस लाइन को कंसोल में दर्ज करें:
ActiveRecord::Base.logger = Logger.new(STDOUT)
इस लाइन को कंसोल में दर्ज करें:
ActiveRecord::Base.connection.instance_variable_set :@logger, Logger.new(STDOUT)
ActiveRecord::Base.logger = nil
नहीं है .explain
रेल में विधि 4.
( .to_sql
काम करता है भी, लेकिन नहीं दिखाएगा भी शामिल है)
Category.includes(:products).explain
=> EXPLAIN for: SELECT "categories".* FROM "categories" 0|0|0|SCAN TABLE categories
EXPLAIN for: SELECT "categories_products".* FROM "categories_products" WHERE "categories_products"."category_id" IN (1, 2) 0|0|0|SCAN TABLE categories_products
EXPLAIN for: SELECT "products".* FROM "products" WHERE "products"."id" IN (1, 2, 3, 4, 5, 6, 7) 0|0|0|SEARCH TABLE products USING INTEGER PRIMARY KEY (rowid=?) 0|0|0|EXECUTE LIST SUBQUERY 1
.explain
वसीयत ढूंढने में इतना समय लगा कि मैं नौकरी करूंगा और नहीं .to_sql
। और .explain
अभी भी कच्चे प्रारूप में एसक्यूएल क्वेरी प्रदान नहीं करता है जिसे मैं पीजी कंसोल में चला सकता हूं। लेकिन मुझे समझाने और विश्लेषण करने के लिए कच्ची क्वेरी की आवश्यकता थी। मुझे लगता है कि अब के लिए समझाने के साथ करना होगा।
जैसा कि हाल ही में, आप इसका उपयोग कर सकते हैं:
https://github.com/dejan/rails_panel
इसमें क्रोम के लिए डेवलपर कंसोल पैनल ऐड-ऑन होता है, और मणि फाइल जिसे आपके एप्लिकेशन के जेमफाइल में इस तरह जोड़ा जाना चाहिए :
group :development do
gem 'meta_request'
end
फिर चलाएं:
bundle install
अपने एप्लिकेशन को पुनरारंभ करें, इसे खोलें, और डेवलपर कंसोल लॉन्च करें, और आपको इसे इस तरह देखना चाहिए:
रेल 6 से शुरू करना अधिक सुविधाजनक दृष्टिकोण है: बस ActiveRecord::Base.verbose_query_logs = true
कंसोल में जोड़ें और आप सभी SQL कॉल और स्थानों को देखेंगे जहां इसे बुलाया गया था। अधिक जानकारी https://guides.rubyonrails.org/debugging_rails_applications.html#verbose-query-logs