На консоли удара, если я делаю это:
cd mydir
ls -l > mydir.txt
> оператор получает стандартный вход и перенаправляет его в файл; таким образом, я вкладываю список файлов mydir.txt
вместо в стандартном выводе.
Там какой-либо путь состоит в том, чтобы сделать что-то подобное на консоли направляющих?
У меня есть оператор Ruby, который генерирует большую печать (~8k строки), и я хотел бы смочь видеть его полностью, но консоль только "помнит" последние 1 024 строки или около этого. Таким образом, я думал о перенаправлении в файл - Если кто-либо знает более оптимальный вариант, я внимательно слушаю.
Вы можете использовать переопределение $stdout
для перенаправления выходных данных консоли:
$stdout = File.new('console.out', 'w')
Вам также может потребоваться вызвать это один раз:
$stdout.sync = true
Это перенаправит все выходные данные в файл. Если вы хотите временно перенаправить выходные данные, убедитесь, что вы храните исходное значение $stdout
, чтобы вы могли изменить его обратно.
Если вы напишете следующий код в файле окружения, он должен работать.
if "irb" == $0
config.logger = Logger.new(Rails.root.join('path_to_log_file.txt'))
end
Вы также можете повернуть файл журнала, используя
config.logger = Logger.new(Rails.root.join('path_to_log_file.txt'), number_of_files, file_roation_size_threshold)
Для записи в журнал только активных операций, связанных с записью, вы можете сделать
ActiveRecord::Base.logger = Logger.new(Rails.root.join('path_to_log_file.txt'))
Это также позволяет вам иметь различные конфигурации/файлы журнала для различных сред.
Используйте hirb . Он автоматически пролистывает любой вывод в irb, который длиннее одного экрана. Поместите это в консольный сеанс, чтобы увидеть эту работу:
>> require 'rubygems'
>> require 'hirb'
>> Hirb.enable
Подробнее о том, как это работает, прочтите этот пост .