PHP işlevlerine benzer print_r
ve var_dump
hata ayıklama nedenleriyle bir nesnenin yapısını dökmenin bir yolunu arıyorum .
PHP işlevlerine benzer print_r
ve var_dump
hata ayıklama nedenleriyle bir nesnenin yapısını dökmenin bir yolunu arıyorum .
Yanıtlar:
Görünümlerde:
include DebugHelper
...your code...
debug(object)
Denetleyicilerde, modellerde ve diğer kodlarda:
puts YAML::dump(object)
Ayrıca Rails konsolu altında YAML :: dump shorthand ( y ) kullanabilirsiniz :
>> 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
>>
Yalnızca bazı dize içeriklerini önizlemek istiyorsanız, yükseltme kullanmayı deneyin (örneğin modellerde, denetleyicilerde veya erişilemeyen başka yerlerde). Geri izlemeyi ücretsiz alırsınız :)
>> raise Rails.root
RuntimeError: /home/marcin/work/github/project1
from (irb):17
>>
Ayrıca Ruby debug'ı denemenizi de gerçekten tavsiye ediyorum :
İnanılmaz derecede faydalı!
Kullanabilirsiniz puts some_variable.inspect
. Veya daha kısa versiyon: p some_variable
. Ve daha güzel çıktı için awesome_print gem'i kullanabilirsiniz .
Sadece ilgili verilerin stdout'ta görüntülenmesini istiyorsanız (komut satırından çalıştırıyorsanız terminal çıkışı), kullanabilirsiniz p some_object
.
Önceden verilen yanıtlar harikadır ancak konsolu (terminal) kullanmak istemiyorsanız, Rails'de hata ayıklamanın Helper ActionView :: Helpers :: DebugHelper'ı kullanarak sonucu Görünüm'de yazdırabilirsiniz.
#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
sonuçlar (tarayıcıda)
- !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
Bunu kullanıyorum :)
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
Son zamanlarda kullanıyorum awesome_print 'ın ap
konsolda yanı sıra görünümlerinde veren yöntemi.
Türe özgü renkli çıktı, nesneleri String
veya Numeric
nesneleri görsel olarak taramanız gerektiğinde gerçekten bir fark yaratır (Parlak bir görünüm elde etmek için stil sayfamı biraz değiştirmem gerekse de )
Son zamanlarda bir PRY hayranı oldum, değişkenleri incelemek, çalışan kodda hata ayıklamak ve harici kodu incelemek gibi şeyler yaptığım için onu inanılmaz buldum. Bu özel sorunun cevabı olarak biraz fazla olabilir.
puts theobject.inspect.gsub(",", "\n")