Последовательность сценариев оболочки с граблями - PullRequest
1 голос
/ 01 апреля 2010

Я работаю над утилитой rake и хочу реализовать что-то, упомянутое ниже:

В моем файле Rake есть последовательность команд оболочки. Я хочу, чтобы последовательность ожидала завершения предыдущей команды, прежде чем перейти к следующей.

sh "git commit -m \"#{args.commit_message}\"" do |ok, res|
  # Do some processing
end

sh "git push heroku master"

Итак, в приведенном выше примере я хочу, чтобы

sh "git push heroku master"

не должен выполняться до обработки в

sh "git commit -m \"#{args.commit_message}\"" do |ok, res|
  # Do some processing
end

завершено.

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

С нетерпением жду ответа от члена сообщества в ближайшее время.

Заранее спасибо.

1 Ответ

2 голосов
/ 02 апреля 2010

Если я что-то упустил, вы можете использовать одну из встроенных команд Ruby для выполнения системных команд; взгляните на http://blog.jayfields.com/2006/06/ruby-kernel-system-exec-and-x.html для получения дополнительной информации.

Это не упомянуто в этой ссылке, но я бы, вероятно, выбрал использование обратных галочек (которые я не уверен, если он отличается от системного метода) для выполнения команды оболочки, например:

output = `ls`     # => gets the output of the ls command to the output variable

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

output = `git commit -m "#{args.commit_message}"` do |ok, res|
  # Do some processing
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...