पीएचपी में आप कर सकते हैं:रूबी/रेल में PHP के print_r के बराबर है?
print_r($var)
या vardump($var)
जो प्रिंट "मानव-readible" चर के बारे में जानकारी।
रूबी/रेल में उन लोगों के लिए समकक्ष कार्य/सहायक हैं?
पीएचपी में आप कर सकते हैं:रूबी/रेल में PHP के print_r के बराबर है?
print_r($var)
या vardump($var)
जो प्रिंट "मानव-readible" चर के बारे में जानकारी।
रूबी/रेल में उन लोगों के लिए समकक्ष कार्य/सहायक हैं?
रेल टेम्पलेट्स में आप
<%= debug an_object %>
कर सकते हैं और यह अच्छा एचटीएमएल प्री आउटपुट करेगा।
पीपी उपयोग करने का प्रयास आप इसे (या आईआरबी में अपने .irbc पहले से ही ऐसा नहीं करती है तो) लिपियों में की आवश्यकता होती है की आवश्यकता होगी:। एक वस्तु इस प्रकार
require 'pp'
तो आप कर सकते हैं 'PrettyPrint':
pp object
विधि inspect
है जो मदद करता है। कभी-कभी किसी ऑब्जेक्ट पर to_s
विधि को कॉल करने में मदद मिलेगी (to_s ऑब्जेक्ट का स्ट्रिंग प्रस्तुति देता है)। आप methods
, local_variables
, class_variables
, instance_variables
, constants
और global_variables
से भी पूछ सकते हैं।
p ['Hello',"G'day",'Bonjour','Hola'].inspect
# >> "[\"Hello\", \"G'day\", \"Bonjour\", \"Hola\"]"
p ['Hello',"G'day",'Bonjour','Hola'].to_s
# >> "HelloG'dayBonjourHola"
p Array.new.methods
# >> ["select", "[]=", "inspect", "compact"...]
monkey = 'baboon'
p local_variables
# >> ["monkey"]
class Something
def initialize
@x, @y = 'foo', 'bar'
@@class_variable = 'gorilla'
end
end
p Something.class_variables
# >> ["@@class_variable"]
s = Something.new
p s.instance_variables
# >> ["@x", "@y"]
p IO.constants
# >> ["TRUNC", "SEEK_END", "LOCK_SH"...]
p global_variables
# >> ["$-d", "$\"", "$$", "$<", "$_", "$-K"...]
, तो आप बस
p object
कर सकते हैं परीक्षण उदाहरण
require 'pp'
class A
def initialize
@a = 'somevar'
@b = [1,2,3]
@c = {'var' => 'val'}
end
end
a = A.new
pp a # Gives -> #<A:0x2c6d048 @a="somevar", @b=[1, 2, 3], @c={"var"=>"val"}>
p a # Gives -> #<A:0x2c6d048 @a="somevar", @b=[1, 2, 3], @c={"var"=>"val"}>. No need to require 'pp'
बाहर चेक डिबगिंग रेल के लिए गाइड: http://guides.rubyonrails.com/debugging_rails_applications.html
संकेत: स्क्रिप्ट/कंसोल एक डिबगर की ओर मुड़े हुए सर्वर शुरू करने के लिए अपने अनुप्रयोग स्क्रिप्ट/सर्वर --debugger के संदर्भ में सामान की कोशिश करना बहुत अच्छा है पर, आप इंटरैक्टिव शैल
पर विचार करने के लिए अपने कोड में 'डीबग' का उपयोग कर सकते हैं मान लीजिए कि मुझे थोड़ा देर हो चुकी है, लेकिन logger.info [डीबग | चेतावनी] के बारे में क्या है? इसे नियंत्रकों और मॉडल से प्रयोग करें। यह आपकी लॉग फ़ाइलों में दिखाई देगा (विकास मोड में जब देव मोड में); और उपरोक्त उल्लिखित <%= debug("str: " + str) %>
विचारों के लिए।
ये आपके प्रश्नों के सटीक उत्तर नहीं हैं लेकिन आप अपने रेल ऐप को एक इंटरैक्टिव सत्र में लोड करने के लिए स्क्रिप्ट/कंसोल का भी उपयोग कर सकते हैं।
आखिरकार, आप अपने रेल एप्लिकेशन के एक लाइन में डीबगर डाल सकते हैं और जब आपका ऐप इस लाइन को निष्पादित करता है तो ब्राउजर "लटका" देगा और आप अपने डीबगर को सही लाइन से डीबग सत्र में रह सकेंगे स्रोत कोड में। हालांकि यह बड़ी वस्तुओं के लिए एक छोटे से बोझल प्राप्त कर सकते हैं,
logger.debug "OBJECT: #{an_object.to_yaml}"
आसान को पढ़ने के लिए:
मैंने इस कोड को नियंत्रक में लिखा है ---- डीफ़ इंडेक्स @users = user.all end --- अब मैं सरणी मुद्रित करना चाहता हूं, मैं इसे <% = डीबग (@users)%> लागू करता हूं लेकिन काम नहीं कर रहा हूं :( – Harman
एक दृष्टिकोण मैं एक बहुत पर दुबला यह है।
मुझे पता है कि यह एक पुरानी पोस्ट है, लेकिन यह पहली बात है कि Google PHP प्रिंट_आर के रूबी समकक्ष की खोज करते समय पॉप अप करता है। मैं कमांड लाइन मोड में रूबी का उपयोग कर रहा हूं, और वास्तव में बहुत अच्छा समकक्ष नहीं है। "पीपी" काफी सरल संरचनाओं के लिए ठीक है, लेकिन जैसे ही आप अधिक सरणी में हैश में सरणी में घोंसले के घोंसले शुरू करते हैं, यह बहुत तेज़ हो जाता है। चूंकि मुझे print_r का अच्छा अनुकरण नहीं मिला है, इसलिए मैंने खुद को लिखा है। यह मेरे उद्देश्यों के लिए काफी अच्छा है, अत्यधिक जटिल नहीं है और मैंने सोचा कि मैं इसे अन्य लोगों को कुछ सिरदर्द बचाने के लिए साझा करूंगा। real PHP print_r
def print_r(inHash, *indent)
@indent = indent.join
if (inHash.class.to_s == "Hash") then
print "Hash\n#{@indent}(\n"
inHash.each { |key, value|
if (value.class.to_s =~ /Hash/) || (value.class.to_s =~ /Array/) then
print "#{@indent} [#{key}] => "
self.print_r(value, "#{@indent} ")
else
puts "#{@indent} [#{key}] => #{value}"
end
}
puts "#{@indent})\n"
elsif (inHash.class.to_s == "Array") then
print "Array\n#{@indent}(\n"
inHash.each_with_index { |value,index|
if (value.class.to_s == "Hash") || (value.class.to_s == "Array") then
print "#{@indent} [#{index}] => "
self.print_r(value, "#{@indent} ")
else
puts "#{@indent} [#{index}] => #{value}"
end
}
puts "#{@indent})\n"
end
# Pop last indent off
8.times {@indent.chop!}
end
यहाँ के साथ उत्पादन के लिए एक उदाहरण की तुलना में (उद्देश्य पर गंदा कर दिया दिखाने के लिए क्यों पीएचपी print_r इतना अच्छा है):
carTools = [ "Socket Set", "Combination Wrenches", "Oil Filter puller", "Brake Compressor" ]
houseTools =[ "Circular Saw", "Miter Saw", "Drill" ]
garageItems = Hash["Car1" => "Ford Mustang", "Car2" => "Honda Civic", "Bike1" => "IronHorse"]
garageItems["Tools"] = Hash["Car Tools" => carTools, "House Tools" => houseTools]
constructionSupplies = Hash["Plywood" => ["3/4\" T&G Plywood Sheets", "1/2\" Plywood Sheets"],
"Boards" => ["2x4s", "2x6s", "Engineered I-Joists"],
"Drywall" => ["4x8 1/2\" Sheetrock", "Mesh tape", "Paper tape", "Joint compount"]]
carParts = Hash["Mustang" => ["Clutch", "Transmission", "3.55 Ring & Pinion Gears", "Differential", "30# Injectors", "Pro-M 77mm MAF"]]
garageItems["Supplies"] = ["Oil", "WD40", constructionSupplies, carParts, "Brake Fluid"]
print_r(garageItems)
print_r (वास्तव में एक मानव द्वारा सुबोध) का आउटपुट:
Hash
(
[Car1] => Ford Mustang
[Car2] => Honda Civic
[Bike1] => IronHorse
[Tools] => Hash
(
[Car Tools] => Array
(
[0] => Socket Set
[1] => Combination Wrenches
[2] => Oil Filter puller
[3] => Brake Compressor
)
[House Tools] => Array
(
[0] => Circular Saw
[1] => Miter Saw
[2] => Drill
)
)
[Supplies] => Array
(
[0] => Oil
[1] => WD40
[2] => Hash
(
[Plywood] => Array
(
[0] => 3/4" T&G Plywood Sheets
[1] => 1/2" Plywood Sheets
)
[Boards] => Array
(
[0] => 2x4s
[1] => 2x6s
[2] => Engineered I-Joists
)
[Drywall] => Array
(
[0] => 4x8 1/2" Sheetrock
[1] => Mesh tape
[2] => Paper tape
[3] => Joint compount
)
)
[3] => Hash
(
[Mustang] => Array
(
[0] => Clutch
[1] => Transmission
[2] => 3.55 Ring & Pinion Gears
[3] => Differential
[4] => 30# Injectors
[5] => Pro-M 77mm MAF
)
)
[4] => Brake Fluid
)
)
क्या यह फ़ाइल या नियंत्रक को देखने में है? – Harman