2009-05-24 25 views

Trả lời

113

Phương pháp .inspect của bất kỳ đối tượng cần định dạng là một cách chính xác để trưng bày, chỉ cần làm ..

<%= theobject.inspect %> 

Phương pháp .methods cũng có thể sử dụng:

<%= theobject.methods.inspect %> 

Nó có thể giúp đưa rằng trong <pre> thẻ, tùy thuộc vào dữ liệu

+8

vâng đây sẽ là câu trả lời IMHO –

+0

này làm việc rất lớn cho tôi trong Sinatra. –

+1

chỉ cần tiết kiệm thời gian cho những người tìm kiếm định dạng neater trong bảng điều khiển: 'đặt theobject.inspect.gsub (", "," \ n ")' – Gus

63

Trong lần xem:

include DebugHelper 

...your code... 

debug(object) 

Trong bộ điều khiển, mô hình, và các mã khác:

puts YAML::dump(object) 

Source

+0

DebugHelper của debug (object) nâng cao phương pháp xác định 'DebugHelper của :) –

+0

tôi đã nhận mà cũng – tam5

3

Nếu bạn chỉ muốn các dữ liệu có liên quan sẽ được hiển thị để stdout (đầu ra của thiết bị đầu cuối nếu bạn đang chạy từ dòng lệnh), bạn có thể sử dụng p some_object.

8

Trong chế độ xem, bạn có thể sử dụng <%= debug(yourobject) %> để tạo chế độ xem YAML cho dữ liệu của mình. Nếu bạn muốn một cái gì đó trong nhật ký của bạn, bạn nên sử dụng logger.debug yourobject.inspect.

6

Bạn cũng có thể sử dụng YAML :: đổ viết tắt (y) dưới Rails console:

>> 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 
>> 

Nếu bạn muốn chỉ xem trước một số nội dung chuỗi, hãy thử sử dụng tăng (ví dụ như trong mô hình, bộ điều khiển hoặc một số nơi không thể tiếp cận khác). Bạn nhận được các vết lùi miễn phí :)

>> raise Rails.root 
RuntimeError: /home/marcin/work/github/project1 
    from (irb):17 
>> 

Tôi cũng thực sự khuyến khích bạn thử ruby-debug:

Đó là vô cùng helpf ul!

0

tôi sử dụng này :)

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

Gần đây tôi đang sử dụng awesome_print 's ap phương pháp mà hoạt động trên giao diện điều khiển cũng như trong quan điểm.

Các loại cụ thể sản lượng màu thực sự làm cho một sự khác biệt nếu bạn cần để quét trực quan cho String hoặc Numeric đối tượng (Mặc dù tôi đã phải tinh chỉnh stylesheet của tôi một chút để có được một cái nhìn đánh bóng)

0

Gần đây tôi đã trở thành một fan hâm mộ của PRY, tôi đã tìm thấy nó vô cùng để làm những việc như kiểm tra các biến, gỡ lỗi chạy mã và kiểm tra mã bên ngoài. Nó có thể là một chút quá mức cần thiết như một câu trả lời cho câu hỏi cụ thể này.

5

Bạn có thể sử dụng puts some_variable.inspect. Hoặc phiên bản ngắn hơn: p some_variable. Và cho đầu ra đẹp hơn, bạn có thể sử dụng awesome_print gem.

2

câu trả lời Prrevious là tuyệt vời nhưng nếu bạn không muốn sử dụng giao diện điều khiển (terminal), trong Rails bạn có thể in kết quả trong View bằng Helper của debug ActionView::Helpers::DebugHelper

#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 

kết quả (trong trình duyệt)

- !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 
Các vấn đề liên quan