Давайте сначала проверим вывод внутреннего printf:
/n, 1, 0, 0, 0
Теперь вам нужно рассмотреть 2 вещи:
1) You have to take escape sequences like '\n','\t' etc into account.
2) You have to take 1 escape sequence as 1 character (not 2)
Внешний printf возвращает фактическое количество символов внутреннего printf, которое равно 5. Таким образом, внешний printf возвращает 5.
Метод .inspect
любого объекта должен быть правильно отформатирован для отображения, просто сделайте ..
<%= theobject.inspect %>
Метод .methods
также может быть использования:
<%= theobject.methods.inspect %>
Это может помочь поместить это в теги
, в зависимости от данных
В представлениях:
include DebugHelper
...your code...
debug(object)
В контроллерах, моделях и другом коде :
puts YAML::dump(object)
В представлении вы можете использовать <% = debug (yourobject)%>
, который будет генерировать YAML-представление ваших данных. Если вы хотите что-то в своем журнале, используйте logger.debug yourobject.inspect
.
Вы также можете использовать сокращение YAML :: dump ( y ) в консоли 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 (например, в моделях, контроллерах или другом недоступном месте). Вы получаете обратную трассировку бесплатно :)
>> raise Rails.root
RuntimeError: /home/marcin/work/github/project1
from (irb):17
>>
Я также очень рекомендую вам попробовать ruby-debug :
Это невероятно полезно!
Если вы просто хотите, чтобы соответствующие данные отображались в stdout (вывод терминала, если вы работаете из командной строки) вы можете использовать p some_object
.
Я использую это :)
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