2009-05-24 3 views

ответ

113

.inspect метод любого объекта должен форматировать правильно для отображения, просто сделать ..

<%= theobject.inspect %> 

Метод .methods может также использоваться:

<%= theobject.methods.inspect %> 

Это может помочь положить, что в <pre> тегов, в зависимости от данных

+8

да это должно быть ответом IMHO –

+0

Это работало отлично подходит для меня в Синатры. –

+1

просто хранитель времени для тех, кто ищет форматирование в консоли: 'puts theobject.inspect.gsub (", "," \ n ")' – Gus

63

В просмотров:

include DebugHelper 

...your code... 

debug(object) 

В контроллерах, моделях, и другой код:

puts YAML::dump(object) 

Source

+0

DebugHelper в отладочный (объект) поднять неопределенный метод 'DebugHelper'S' :) –

+0

я получил, что также – tam5

3

Если вы просто хотите, соответствующие данные, которые будут отображаться на стандартный вывод (вывод терминала, если вы работаете из командной строки), вы можете использовать p some_object.

8

В представлении вы можете использовать <%= debug(yourobject) %>, который будет генерировать YAML-представление ваших данных. Если вы хотите что-то в своем журнале, вы должны использовать logger.debug yourobject.inspect.

6

Вы также можете использовать YAML :: дамп стенографии (у) под Rails консоли:

>> 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 Rails.root 
RuntimeError: /home/marcin/work/github/project1 
    from (irb):17 
>> 

Я также очень рекомендую вам попробовать рубиново-отладки:

Это невероятно помочь уль!

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_print «s ap метод, который работает на консоли, а также в представлениях.

Типа конкретного цвета выход действительно имеет значение, если вам нужно визуально сканировать String или Numeric объектов (Хотя я должен был настроить мою таблицу стилей немного для того, чтобы получить полированный вид)

0

Недавно я стали фанатом PRY, я нашел это невероятно для выполнения таких вещей, как проверка переменных, отладка исполняемого кода и проверка внешнего кода. Это может быть немного излишним ответом на этот конкретный вопрос.

5

Вы можете использовать puts some_variable.inspect. Или более короткая версия: p some_variable. И для более качественного вывода вы можете использовать awesome_print gem.

2

Prrevious ответы велики, но если вы не хотите использовать консоль (терминал), в Rails можно распечатать результат в представлении с помощью помощника Отладочного в 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 

результаты (в браузере)

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