我正在尝试从会话数据对象中获取域名,但该对象非常庞大而且非常密集。
数据样本
#<ActionDispatch::Request::Session::Options:0x007f982c42b988 @by=#
<ActionDispatch::Session::CookieStore:0x007f982e03d798 @app=#
<ActionDispatch::Flash:0x007f982e03d7e8 @app=#
<ActionDispatch::ParamsParser:0x007f982e03d9a0 @app=#
<Rack::Head:0x007f982e03d9f0 @app=#<Rack::ConditionalGet:0x007f982e03da40
@app=#<Rack::ETag:0x007f982e03da68 @app=#<OmniAuth::Builder:0x007f982e03e4b8
@options=nil, @warmup=nil, @run=#
<ActionDispatch::Routing::RouteSet:0x007f982c4325f8>, @map=nil, @use=[#
<Proc:0x007f982e03db30@/REMOVED/.rvm/gems/ruby-2.3.1/gems/rack-
1.6.6/lib/rack/builder.rb:86>]>, @cache_control="max-age=0, private, must-
revalidate", @no_cache_control="no-cache">>>, @parsers={#
<Mime::Type:0x007f982dae3270 @synonyms=["text/x-json",
"application/jsonrequest"], @symbol=:json, @string="application/json",
@hash=-2179284299704414862>=>:json}>>, @default_options={:path=>"/",
:domain=>nil, :expire_after=>nil, :secure=>false, :httponly=>true,
:defer=>false, :renew=>false}, @key="_faq-app_session", @cookie_only=true>,
@env={"SERVER_SOFTWARE"=>"thin 1.7.0 codename Dunder Mifflin",
对于几个页面来说,它会继续下去
答案 0 :(得分:0)
查看任意对象的结构不是OOP原则所鼓励的东西:对象隐藏了在它们之外应该是无关紧要的东西。此外,可能存在比一次读取所有数据更多的数据。要探索随机对象,最好的方法可能是pry
gem,它允许您在控制台中检查对象。如果确实需要,可以轻松地创建一个函数来递归所有对象的instance_variables
并打印出来。
但是,这里可能不需要通用方法。这似乎是一个ActionDispatch::Request::Session::Options
对象。它有一个#to_hash
方法,并且哈希值可以打印出来:
require 'json'
puts JSON.pretty_generate(session_options.to_hash)
或者如果您不需要标准格式,
require 'pp'
pp session_options.to_hash