Запретить вывод ruby ​​/ rails результатов выражений присваивания - PullRequest
1 голос
/ 12 марта 2019

Когда я делаю что-то подобное в рельсах:

irb(main):060:0> users = User.where(name: "Joe")

Консоль оценит users и распечатает его (возможно, с inspect или to_s, я не уверен на 100%). Это приводит к сотням строк вывода, которые мне не нужны.

Я знаю, что могу сделать что-то подобное, чтобы предотвратить вывод одной конкретной строки:

irb(main):060:0> users = User.where(name: "Joe"); nil

Поскольку nil будет оцениваться и распечатываться вместо users.

Я также мог бы отключить все оценки с помощью:

irb(main):060:0> conf.echo = false

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

У Python, похоже, нет этой проблемы. Если я наберу a = {1: 2}, оболочка python не оценивает a, она просто снова показывает приглашение. Но если я наберу {1: 2} или просто a, он выведет значение.

Похоже, консоль python проверяет, есть ли левая сторона оцениваемого оператора, чтобы решить, печатать результат или нет.

Вопрос:

Можно ли что-то подобное сделать в консоли ruby? Таким образом, операторы типа a = {1 => 2} не оцениваются, а операторы типа a и {1 => 2} являются?

Обновление:

Я отправил этот запрос на слияние в репозиторий IRB, возможно, он будет принят, и тогда будет способом: https://github.com/ruby/irb/pull/12.

Ответы [ 3 ]

1 голос
/ 20 марта 2019

До тех пор, пока этот запрос на извлечение (или подобный ему) не будет объединен, вы можете поместить в файл ~/.irbrc следующее:IRB::Irb и IRB::Context, нет гарантии, что он будет совместим с будущими выпусками.

0 голосов
/ 12 марта 2019

Создайте файл с именем .irbrc в папке ~ или в текущей папке.Внутри добавьте:

IRB.conf[:ECHO] = false

Это должно отключить эхо.

Если вы puts IRB.conf, вы увидите и другие настройки, которые вы также можете настроить.

Больше информациинаходится в документации irb

0 голосов
/ 12 марта 2019

Я полагаю, это связано с тем, что в назначении Ruby автоматически возвращается назначенное значение, то есть

a = 1
#=> 1

Если вы покопаетесь в документации для conf.echo, вы увидите, что она используется для управления любымнапечатать возвращаемое значение или нет.

...