Как определить значение переменной контроллера во время выполнения в Ruby on Rails?

StackOverflow https://stackoverflow.com/questions/60720

Вопрос

Как мне лучше всего определить значение переменной контроллера во время выполнения?

Например, есть ли способ вставить разрыв в код и вызвать вывод значения переменной на экран (или в журнал)?

Это было полезно?

Решение

Да.Самый простой способ — поднять значение в виде строки.Вот так: raise @foo.to_s

Или вы можете установить отладчик (gem install ruby-debug), а затем запустите сервер разработки с помощью команды --debugger флаг.Затем в своем коде вызовите debugger инструкция.

Внутри приглашения отладчика имеется множество команд, в том числе p чтобы напечатать значение переменной.

Обновлять: вот еще немного о Ruby-Debug.

Другие советы

Если у вас есть переменная экземпляра контроллера с именем @foo, то в вашем контроллере вы можете просто сделать что-то вроде:

logger.debug "@foo is: #{@foo}"

Кроме того, вы можете вывести значение в шаблоне представления, используя:

<%= debug @foo %>

Я предпочитаю использовать метод проверки следующим образом:

raise @foo.inspect

Он содержит больше информации, чем to_s, например значения атрибутов.

Резюме от Джорди Банстера, Джона Топли и Джарил:

Я.Быстрый и грязный способ:

raise @foo.inspect

в вашем контроллере.Или

<% raise @foo.inspect %>

на ваш взгляд.

II.Правильный вход вам development.log:

logger.debug "@foo == #{@foo.inspect}"

III. Полноценная отладка:

Установите отладчик (gem install ruby-debug), а затем запустите сервер разработки с помощью команды --debugger флаг.Затем в своем коде вызовите debugger инструкция.

Внутри приглашения отладчика имеется множество команд, в том числе p чтобы напечатать значение переменной.

Вызов исключения — самый быстрый способ, если вам просто нужно просмотреть значение, но стоит потратить время на то, чтобы научиться правильно использовать отладчик.Редко когда вам нужно просто увидеть значение переменной, вы, скорее всего, пытаетесь найти ошибку в своем коде, и для этого и нужен отладчик.

Отправка информации в журнал разработки происходит медленнее, чем любой из двух других вариантов здесь, если вы научитесь использовать отладчик (который хочет читать файлы журналов).Используйте регистратор для производства, вам захочется узнать, какова была ценность, когда кто-то позвонит вам и скажет, что все сломано.

Ну, я обычно предпочитаю стандартный вывод ошибок

$stderr.print("что угодно")

Это просто и делает свою работу.

  1. Добавлять подрывные действия в Gemfile: gem 'pry-moves'
  2. Вставлять binding.pry где ты хочешь остановиться
  3. Введите имя переменной, чтобы увидеть ее значение.

Затем продолжите, набрав c, перейдите на следующую строку с помощью n или выполните другие действия по отладке, пока проблема не будет решена.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top