আমি পিএইচপি ফাংশনগুলির অনুরূপ print_r
এবং var_dump
ডিবাগিং কারণে কোনও অবজেক্টের কাঠামো ডাম্প করার একটি উপায় খুঁজছি ।
আমি পিএইচপি ফাংশনগুলির অনুরূপ 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
। এবং সুন্দর আউটপুট জন্য, আপনি দুর্দান্ত_প্রিন্ট রত্ন ব্যবহার করতে পারেন ।
আপনি যদি চান যে প্রাসঙ্গিক ডেটাটি স্টডআউটে প্রদর্শিত হবে (আপনি যদি কমান্ড লাইন থেকে চালাচ্ছেন তবে টার্মিনাল আউটপুট) ব্যবহার করতে পারেন p some_object
।
পূর্ববর্তী উত্তরগুলি দুর্দান্ত তবে আপনি যদি কনসোল (টার্মিনাল) ব্যবহার করতে না চান, তবে রেলগুলিতে আপনি ডিবাগের হেল্পার অ্যাকশনভিউ :: সহায়কগুলি :: ডিবাগহেল্পার ব্যবহার করে ভিউতে ফলাফল মুদ্রণ করতে পারেন can
#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")