Не могу вызвать "sh" внутри класса на моем Rakefile

Я новичок в ruby, и я пишу довольно простой Rakefile. Содержит класс Installer у этого есть метод shell какие звонки sh как это:

class Installer
  def shell(command)
    sh command
  end
end

Когда я запускаю его, он бросает

NoMethodError: undefined method `sh' for #<Installer:0x00007ffde8098b78>`

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

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

2 ответа

Изменить sh обращение к Rake.sh, По крайней мере, мне показалось, что это работает.

system метод из Kernel модуль возвращает false, если команда, запущенная из оболочки, возвращает ненулевое значение.

irb(main):002:0> system('exit 1')
=> false

irb(main):003:0> system('exit 0')
=> true

Вы можете использовать это как способ выхода из ненулевых возвратов из команд оболочки.

Другие вопросы по тегам