Я совершенно новый для Ruby, и я исхожу из фона Python. Чтобы помочь изучать язык, я переношу существующий сценарий Python, чтобы я мог сравнивать бок о бок. До сих пор у меня небольшой код, и я смущен тем, что «nil» печатает на консоли. Код ниже:Ruby puts Отображает нуль в спасении
#!/usr/bin/ruby
require 'date'
backup_dirs = ['/backups/db', '/backups/log']
backup_dirs.each do |backup_dir|
Dir.glob(backup_dir + '/' + '*.*.*.*.*.*').each do |filename|
begin
creation_date = DateTime.strptime(filename.split('.')[3], '%m%d%Y%H%M')
rescue
puts "Skipping #{filename}, invalid file."
end
end
puts 'File is okay.'
end
Если метод DateTime.strptime
бросает исключение, rescue
бежит и puts
печатает строки штрафа. Кроме того, после этого появляется nil
. Я «googled» и обнаружил, что puts
возвращает nil
. Но почему это видно только в области rescue
, а не в линии File is okay.
.
I.e. выход пример rescue
будет:
Skipping /backups/log/fs.server.dir.999999999999.14.log, invalid file.
nil
И, как я делаю это прекратить отображение, что на консоли? Я уверен, что это фундаментальная языковая вещь, просто очень новая для языка, поэтому любое понимание было бы очень оценено.
Thanks - Tom
Не могли бы вы дать более подробную информацию о том, как вы запускаете этот код? Вы копируете/вставляете его в консоль? – BroiSatse
Привет извините ... не учтены подробности. Я просто запускаю это в командной строке сервера Linux через сеанс SSH ... не через IRB или что-то еще. – user164266
Все еще не может воспроизвести. Это полный код, или это просто фрагмент? 'nil' никогда не появятся на выходе, если вы не скажете об этом (и вам действительно нужно увидеть нуль там, так как 'puts nil' будет печатать пустую строку) – BroiSatse