Просто нужно было использовать ".each_line" вместо ".each".
я есть следующий крюк предварительного толчка. В идеале я хотел бы, чтобы он просматривал все файлы, которые отправляются в мой репозиторий, и отклонял бы push, если содержимое какого-либо из файлов не соответствует регулярному выражению, определенному вверху. Я получаю следующую ошибку при попытке перебрать файлы: «неопределенный метод` each 'for »»: String (NoMethodError) ». «.each» не работает, так как команда git возвращает строку, содержащую измененные файлы.
#!/usr/bin/env ruby
regex = "\\s*GO\\s*$"
localRef, remoteRef = ARGV
#puts localRef
#puts remoteRef
input = $stdin.readlines[0]
localSha = input.split(" ")[1]
remoteSha = input.split(" ")[3]
#puts localSha
#puts remoteSha
range = "#{remoteSha}..#{localSha}"
#folderPath = `git rev-parse --show-toplevel`
#puts folderPath
`git diff --name-only --diff-filter=ACMR #{range}`.each do |file|
#puts file
content = File.read(file)
unless content.match(regex)
puts "#{file} must end with 'GO' keyword"
exit 1
end
end
exit 0
У кого-нибудь есть представление о том, как можно перебрать возвращенные файлы?
Спасибо