etspring
@etspring
Начитанное быдло

Как отправить каждый элемент массива в pipeline?

Доброго времени суток, Рубаны.
Имеется файл, который считывается через readlines. Далее идут некоторые манипуляции с этими строками.
И затем строка должна быть отправлена в стору minio через pipeline.

Проблема заключается в том, что pipeline до сторы поднимается при помощи запуска бинарника.

require 'shell'
shell.system("minio-cmd pipe minio-server/my_store/long_test.txt")


Собственно вариант N1, но он не подходит, так как pipeline будет закрыт после отправки первой строки.
require 'shell'
shell = Shell.new
pipeline = shell.system("minio-cmd pipe minio-server/my_store/long_test.txt")

File.readlines('data.txt').each do |line|
  shell.echo(line) | pipeline
end


Вариант N2, тоже увы нерабочий
def pipe_it
  File.readlines('data.txt').each do |line|
   .......
   .......
   yield(line)
  end
end
pipe_it{|x| shell.echo("#{x}")} | pipeline


Куда копать? Какие возможны варианты реализации без использования дополнительных gem'ов?
Заранее спасибо за ответы.
  • Вопрос задан
  • 41 просмотр
Пригласить эксперта
Ответы на вопрос 1
@kaasmith
А если создавать shell на каждую строку, т.е. внутри блока чтения файла?

File.readlines('data.txt').each do |line|
  shell.system("minio-cmd pipe minio-server/my_store/long_test.txt | #{line}")
end


Не проверял, но в рамках блока должно работать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы