2016-08-24 13 views
0

私はルビーの初心者です。私たちはルビーで自動化されたインストールプロセスを持っています。私は、ルビスクリプトをシェルスクリプトの変更に適応させる問題に直面しています。ルビーでプロンプトが表示されたら自動入力の資格情報

execute "update_imports" do 
cwd import_home 
command "./Import.sh #{download_dir}/#{import_file} #{user} #{Shellwords.escape(password)}" 
action :run 
end 

Import.shは今、それは私がするルビーファイルを変更したい

Earlier: 
./Import.sh /tmp/importTest.xml test1 password 

Now: 
./Import.sh /tmp/importTest.xml 
username: test1 
password: 

(以前のように、引数としてユーザー名とパスワードをとらない)ユーザ名とパスワードを要求するように変更されましたこの変更に適応してください。そうする最善の方法を提案できますか?私はいくつかの検索と学習をしようとしましたが、かなり新しいルビーです。私は無知です。

+0

あなたは、フレームワークを使用するか、またはこれは、独自のDSLでいますか? – Stefan

+0

いいえ..私たちはフレームワークを使用していません – Pradeep

+0

最も良い方法は、ユーザー名とパスワードを引数として、またはプロンプト経由で渡すことができるように、おそらく 'Import.sh'を変更することです。 – Stefan

答えて

0

あなたはルビー標準ライブラリにopen3を使用することができます。

download_dir = "./test/dir" 
shell_command = "./Import.sh #{download_dir}" 
username = "username" 
password = "password" 

Open3.popen3("shell_command") do |input, output, error, thread| 
    input.puts(username) # answers the username prompt 
    input.puts(password) # answers the password prompt 
    puts output.read # prints the output of the script so far 
end 
関連する問題