PHP 함수 print_r
와 비슷하고 var_dump
디버깅 이유로 객체의 구조를 덤프하는 방법을 찾고 있습니다.
PHP 함수 print_r
와 비슷하고 var_dump
디버깅 이유로 객체의 구조를 덤프하는 방법을 찾고 있습니다.
답변:
보기에서 :
include DebugHelper
...your code...
debug(object)
컨트롤러, 모델 및 기타 코드에서 :
puts YAML::dump(object)
Rails 콘솔에서 YAML :: dump 속기 ( 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를 사용해보십시오 (예 : 모델, 컨트롤러 또는 기타 접근 할 수없는 위치). 무료로 역 추적을받을 수 있습니다.)
>> raise Rails.root
RuntimeError: /home/marcin/work/github/project1
from (irb):17
>>
나는 또한 당신이 ruby-debug 를 시도하는 것을 정말로 권장합니다 .
매우 도움이됩니다!
사용할 수 있습니다 puts some_variable.inspect
. 또는 더 짧은 버전 : p some_variable
. 더 예쁜 출력을 위해 awesome_print gem을 사용할 수 있습니다 .
이전 답변은 훌륭하지만 콘솔 (터미널)을 사용하지 않으려면 Rails에서 디버그의 Helper ActionView :: Helpers :: DebugHelper 를 사용하여 View에 결과를 인쇄 할 수 있습니다.
#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
객체 를 시각적으로 스캔해야하는 경우 실제로 차이를 만듭니다 (멋진 모양을 얻기 위해 스타일 시트를 약간 조정해야했지만).
puts theobject.inspect.gsub(",", "\n")