मैं PHP कार्यों के समान print_rऔर var_dumpडिबगिंग कारणों के लिए किसी ऑब्जेक्ट की संरचना को डंप करने का एक तरीका ढूंढ रहा हूं ।
मैं PHP कार्यों के समान print_rऔर var_dumpडिबगिंग कारणों के लिए किसी ऑब्जेक्ट की संरचना को डंप करने का एक तरीका ढूंढ रहा हूं ।
जवाबों:
विचारों में:
include DebugHelper
...your code...
debug(object)
नियंत्रक, मॉडल और अन्य कोड में:
puts YAML::dump(object)
आप रेल्स कंसोल के नीचे YAML :: डंप शॉर्टहैंड ( y ) का भी उपयोग कर सकते हैं :
>> y User.first
--- !ruby/object:User
attributes:
created_at: 2009-05-24 20:16:11.099441
updated_at: 2009-05-26 22:46:29.501245
current_login_ip: 127.0.0.1
id: "1"
current_login_at: 2009-05-24 20:20:46.627254
login_count: "1"
last_login_ip:
last_login_at:
login: admin
attributes_cache: {}
=> nil
>>
यदि आप कुछ स्ट्रिंग सामग्री का पूर्वावलोकन करना चाहते हैं, तो बढ़ाने का उपयोग करने का प्रयास करें (उदाहरण के लिए मॉडल, नियंत्रक या कुछ अन्य दुर्गम स्थान पर)। आपको मुफ्त में बैकट्रेस मिलेगा :)
>> raise Rails.root
RuntimeError: /home/marcin/work/github/project1
from (irb):17
>>
मैं वास्तव में आपको रूबी-डिबग की कोशिश करने के लिए प्रोत्साहित करता हूं :
यह अविश्वसनीय रूप से उपयोगी है!
आप उपयोग कर सकते हैं puts some_variable.inspect। या कम संस्करण p some_variable:। और prettier उत्पादन के लिए, आप भयानक_प्रिंट रत्न का उपयोग कर सकते हैं ।
यदि आप चाहते हैं कि संबंधित डेटा को stdout में प्रदर्शित किया जाए (यदि आप कमांड लाइन से चल रहे हैं तो टर्मिनल आउटपुट), आप उपयोग कर सकते हैं p some_object।
स्पष्ट उत्तर महान हैं, लेकिन यदि आप कंसोल (टर्मिनल) का उपयोग नहीं करना चाहते हैं, तो रेल में आप डीबग के हेल्पर एक्शन व्यू का उपयोग करके परिणाम को प्रिंट कर सकते हैं :: सहायकों :: DebugHelper
#app/view/controllers/post_controller.rb
def index
@posts = Post.all
end
#app/view/posts/index.html.erb
<%= debug(@posts) %>
#start your server
rails -s
परिणाम (ब्राउज़र में)
- !ruby/object:Post
raw_attributes:
id: 2
title: My Second Post
body: Welcome! This is another example post
published_at: '2015-10-19 23:00:43.469520'
created_at: '2015-10-20 00:00:43.470739'
updated_at: '2015-10-20 00:00:43.470739'
attributes: !ruby/object:ActiveRecord::AttributeSet
attributes: !ruby/object:ActiveRecord::LazyAttributeHash
types: &5
id: &2 !ruby/object:ActiveRecord::Type::Integer
precision:
scale:
limit:
range: !ruby/range
begin: -2147483648
end: 2147483648
excl: true
title: &3 !ruby/object:ActiveRecord::Type::String
precision:
scale:
limit:
body: &4 !ruby/object:ActiveRecord::Type::Text
precision:
scale:
limit:
published_at: !ruby/object:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZoneConverter
subtype: &1 !ruby/object:ActiveRecord::Type::DateTime
precision:
scale:
limit:
created_at: !ruby/object:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZoneConverter
subtype: *1
updated_at: !ruby/object:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZoneConverter
subtype: *1
मैं यह प्रयोग :)
require 'yaml'
module AppHelpers
module Debug
module VarDump
class << self
def dump(dump_object, file_path)
File.open file_path, "a+" do |log_file|
current_date = Time.new.to_s + "\n" + YAML::dump(dump_object) + "\n"
log_file.puts current_date
log_file.close
end
end
end
end
end
end
हाल ही में मैंने उपयोग कर रहा हूँ awesome_print की apविधि है जो कंसोल पर और साथ ही विचारों में काम करता है।
यदि आप Stringया Numericवस्तुओं के लिए नेत्रहीन स्कैन करने की जरूरत है, तो टाइप-विशिष्ट रंगीन आउटपुट वास्तव में एक फर्क पड़ता है (हालांकि एक पॉलिश लुक पाने के लिए मुझे अपनी स्टाइलशीट को थोड़ा मोड़ना पड़ा)
हाल ही में मैं PRY का प्रशंसक बन गया हूँ, मैंने इसे अविश्वसनीय रूप से वेरिएबल्स का निरीक्षण करने, रनिंग कोड डिबग करने और बाहरी कोड का निरीक्षण करने जैसी चीजों के लिए अविश्वसनीय रूप से पाया है। इस विशिष्ट प्रश्न के उत्तर के रूप में यह थोड़ा ओवरकिल हो सकता है।
puts theobject.inspect.gsub(",", "\n")