2017-10-13 6 views
0

Je ne comprends pas pourquoi quand j'exécute mon code et que j'ai choisi la première option qu'il a laissée sans rien faire. Vous trouverez ci-dessous le code de mon script de cristal.Appeler le code du module et l'exécuter depuis une option de sélection dans le menu

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 

Ceci est le code de mon module d'installation avec la méthode install_soft. Il imprimer correctement mon puts " you are .." mais il ne fait rien d'autre :(

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 

Répondre

0

J'ai trouvé une solution pour voir la pile en temps réel avec sortie: true

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

Eh bien, que doit-il faire? Votre collecte stdout du processus dans une mémoire IO et le convertir en chaîne.

Si vous pour imprimer des stdout du processus sTDOUT de votre application, vous devez soit transmettre (utiliser STDOUT au lieu de la mémoire IO) ou imprimer le contenu de la mémoire IO stdout (puts install_soft).

0

i trouvé la solution que je dois utiliser

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

mais pour le moment je ne peux pas obtenir la sortie de mon script :(

+0

'met output' devrait imprimer sur votre sortie. Assurez-vous également que le script d'installation génère toute sortie à capturer. –