PHP functions print_r
およびvar_dump
デバッグの理由。
フォーマットするオブジェクトの.inspect
メソッドは、表示用に正しくなければなりません。
<%= theobject.inspect %>
.methods
メソッドも使用できます:
<%= theobject.methods.inspect %>
データに応じて、<pre>
タグに配置すると役立つ場合があります
ビューで:
include DebugHelper
...your code...
debug(object)
コントローラー、モデル、およびその他のコード:
puts YAML::dump(object)
ビューでは、データのYAMLビューを生成する<%= debug(yourobject) %>
を使用できます。ログに何かが必要な場合は、logger.debug yourobject.inspect
。
YAML :: dumpshorthand(y)=の下でも使用できます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
>>
一部の文字列コンテンツをプレビューする場合は、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 を使用できます。
関連データをstdout(コマンドラインから実行している場合は端末出力)に表示するだけの場合は、p some_object
を使用できます。
前の答えは素晴らしいですが、コンソール(ターミナル)を使用したくない場合は、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
最近、私はawesome_printのap
メソッドを使用しています。これは、コンソールだけでなくビューでも機能します。
String
またはNumeric
オブジェクトを視覚的にスキャンする必要がある場合、タイプ固有の色付き出力は実際に違いを生じます(ただし、洗練された外観を得るためにスタイルシートを少し調整する必要がありました)
私はこれを使用します:)
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
最近、私は [〜#〜] pry [〜#〜] のファンになりました。変数の検査、実行中のコードのデバッグ、外部コードの検査などを行うために信じられないほど見つけました。この特定の質問に対する答えとしては、少しやり過ぎかもしれません。