Ruby / Ruby on Rails에 print_r 또는 var_dump가 있습니까?


답변:


133

.inspect포맷해야 개체의 방법은 표시를 위해, 단지 어떻게 제대로입니다 ..

<%= theobject.inspect %>

.methods방법은 다음과 같이 사용할 수도 있습니다.

<%= theobject.methods.inspect %>

<pre>데이터에 따라 태그 에 넣는 것이 도움이 될 수 있습니다.


2
콘솔에서 더 깔끔한 포맷을 찾는 사람들을위한 시간 절약 :puts theobject.inspect.gsub(",", "\n")
Gus


8

<%= debug(yourobject) %>보기에서 데이터의 YAML보기를 생성하는 것을 사용할 수 있습니다 . 로그에 무언가를 원한다면 logger.debug yourobject.inspect.


6

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 를 시도하는 것을 정말로 권장합니다 .

매우 도움이됩니다!


6

사용할 수 있습니다 puts some_variable.inspect. 또는 더 짧은 버전 : p some_variable. 더 예쁜 출력을 위해 awesome_print gem을 사용할 수 있습니다 .


3

관련 데이터가 stdout (명령 줄에서 실행중인 경우 터미널 출력)에 표시되도록하려면 p some_object.


3

이전 답변은 훌륭하지만 콘솔 (터미널)을 사용하지 않으려면 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

0

나는 이것을 사용한다 :)

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

0

최근에는 콘솔과 뷰에서 작동 하는 awesome_printap메서드를 사용 하고 있습니다.

유형별 색상 출력은 String또는 Numeric객체 를 시각적으로 스캔해야하는 경우 실제로 차이를 만듭니다 (멋진 모양을 얻기 위해 스타일 시트를 약간 조정해야했지만).


0

최근에 나는 PRY 의 팬이되었고, 변수 검사, 실행 코드 디버깅 및 외부 코드 검사와 같은 작업을 수행하는 데 매우 유용 하다는 것을 알게되었습니다. 이 특정 질문에 대한 답변으로 약간 과잉 일 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.