Вызвать код из модуля и выполнить его, так как в меню выбрана опция

Я не понимаю, почему, когда я выполняю свой код, я выбрал первый вариант, который он оставил, ничего не делая. Ниже вы найдете код моего скрипта кристалла.

require "colorize"
class Application

  def initialize
    mainMenu
  end

  def mainMenu
    puts "you are going to install the software?"
    puts " 1: To install the soft you have to be root".colorize.fore(:red).bold
    puts " 2: Modify module"

    case gets
    when "1"
      puts "installation of the software.."
      install_soft

    when "2"
      puts "you chose option2"
    end
  end

  Application.new
end

Это код моего установочного модуля с методом install_soft. Он правильно печатает мой puts " you are ..", но больше ничего не делает :(

module InstallSoft
  def install_soft
    puts "you are in def install_soft "
    output = IO::Memory.new
    Process.run("bash", args: {"eole/lib/bash_scripts/installation.sh"}, output: output)
    output.close
    output.to_s
  end
end

person Oliver    schedule 13.10.2017    source источник


Ответы (3)


Ну что он должен делать? Вы собираете стандартный вывод процесса в памяти ввода-вывода и преобразуете его в строку.

Если вы хотите распечатать стандартный вывод процесса в стандартный вывод вашего приложения, вам придется либо переслать его (используйте STDOUT вместо ввода-вывода памяти), либо распечатать содержимое ввода-вывода памяти в стандартный вывод (puts install_soft).

person Johannes Müller    schedule 13.10.2017

я нашел решение, которое я должен использовать

 Process.run("lib/bash_scripts/installation.sh", shell: true, output: output)
          output.close
          output.to_s

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

person Oliver    schedule 13.10.2017
comment
puts output должен распечатать результат. Кроме того, убедитесь, что сценарий установки производит любой вывод для захвата. - person Vitalii Elenhaupt; 13.10.2017

Я нашел решение, чтобы увидеть стек в реальном времени с выводом: true

 Process.run("lib/bash_scripts/installation.sh", shell: true, output: true, error: true)
person Oliver    schedule 17.10.2017