В рельсах от byebug, как я могу просмотреть вывод переменной сеанса в виде строки, отображающей только ее часть? - PullRequest
0 голосов
/ 24 апреля 2019

В rails от byebug, как я могу просмотреть вывод переменной сеанса в виде строки, отображающей только ее часть?

Я могу просмотреть вывод переменной сеанса из консоли, но она действительно длинная.Если бы я мог поместить это в строку и сделать, например, thestr [1100].тогда это было бы хорошо.Но я не вижу, как получить это в строку.

~/rubymac/cookiesandsessions/sessiontest1$ rails s
=> Booting Puma
=> Rails 5.2.3 application starting in development 
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.12.1 (ruby 2.5.0-p0), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://localhost:3000
Use Ctrl-C to stop
Started GET "/" for 127.0.0.1 at 2019-04-24 15:34:03 +0100
Processing by ApplicationController#index as HTML
Return value is: nil

[1, 5] in /Users/apple/rubymac/cookiesandsessions/sessiontest1/app/controllers/application_controller.rb
   1: class ApplicationController < ActionController::Base
   2:  def index
   3:    byebug 
=> 4:  end
   5: end

Как видите, ответ от сессии очень длинный.И я не вижу, как отобразить, например, только первые 100 символов.например, thestr [0,100]

(byebug) сеанс

@ app = #>, @ cache_control = "max-age = 0, private, must-revalidate", @ no_cache_control ="no-cache" >>>>, @default_options = {: path => "/",: domain => nil,: expire_after => nil,: secure => false,: httponly => true,: defer =>false,: renew => false}, @key = "_ sessiontest1_session", @ cookie_only = true>, @req = # [1, 3], "rack.errors" => #>, "rack.multithread" => true, "rack.multiprocess" => false, "rack.run_once" => false, "SCRIPT_NAME" => "", "QUERY_STRING" => "", "SERVER_PROTOCOL" => "HTTP / 1.1", "SERVER_SOFTWARE" => "puma 3.12.1 Ламы в пижамах", "GATEWAY_INTERFACE" => "CGI / 1.2", "REQUEST_METHOD" => "GET", "REQUEST_PATH" => "/", "REQUEST_URI" => "/", "HTTP_VERSION "=>" HTTP / 1.1 "," HTTP_HO ............ ...........

Я пробовал session.to_s, ноэто делает эту строку, чтобы она не просто конвертировала вышеприведенный вывод в строку.

(byebug) session.to_s
"#<ActionDispatch::Request::Session:0x00007fa60ee91270>"
(byebug) 

Ответы [ 2 ]

2 голосов
/ 24 апреля 2019

Вы можете использовать session.to_h и позже обрабатывать его как обычный хэш.

Добавлен пример из штанги

(byebug) сессия [: godzilla] = "thegodzilla"
"Thegodzilla"
(byebug) session.to_h
{ "Session_id" => "1910becce7d1a46587eede9d25e920ce",
"_Csrf_token" => "BUEarPb / jeyrHrldyY8BJhRyq9TErAG4rS00cz8aaLE ="
"a" => "3", "godzilla" => "thegodzilla"}
(byebug)

0 голосов
/ 24 апреля 2019

здесь есть QnA, Показывать информацию о сеансе в представлении? он спрашивает о представлении, но принятый там ответ относится и к консоли в byebug

session.inspect.to_s

- это необходимая выходная строка.

, поэтому вы, конечно, можете сделать session.inspect.to_s[0..100]

(byebug) session.inspect.to_s.last (300)
"@ port = nil, @ method = nil, @ request_method = nil, @ remote_ip = nil, @ original_fullpath = nil, @ fullpath = nil, @ ip = nil>, @delegate = {\" session_id \ "=> \ "1910becce7d1a46587eede9d25e920ce \", \ "_ csrf_token \" => \ "BUEarPb / jeyrHrldyY8BJhRyq9TErAG4rS00cz8aaLE = \", \ "a \" = \ "3 \", \ ", \> \> => god \ z, \> => god>@loaded = true, @ exist = true> "
(byebug)

Я думаю, что ответ vasfed на session.to_h действительно хорош для показа переменных сеанса и соответствующей частиэто .. (хотя мой вопрос задан для какой-либо части)

Хотя этот ответ показывает переменные (хотя и не так аккуратно, как ответ vasfed), но этот ответ технически отвечает на мой вопросn, который попросил получить всю вещь в виде строки, чтобы показать любую ее часть.

...