2017-01-09 3 views
-1

Readline.readlineでユーザー入力を求めるスクリプトがあります。私はCapistrano経由でリモートで実行したいですが、キャップがReadlineでうまく動かないようです。実行されたスクリプトでユーザ入力を促す他の方法はありますか?私はキャップの外でスクリプトを実行できるようにする必要があるので、キャップタスクにすることはできません。askを使用してください。CapistranoとReadlineのユーザー入力

はここにスクリプトです:

unless User.find_by(is_administrator: true) 
    user_name = Readline.readline("Enter your name: ", true) 
    user_email = Readline.readline("Enter your email: ", true) 

    user = User.create!({ name: user_name, email: user_email, is_administrator: true }) 
end 

答えて

0

カピストラーノは、対話形式の入力を必要とするスクリプトを実行するように意図されていません。あなたのアプローチを変更することをお勧めします。たとえば、ローカルに必要な情報(つまり、ask)を要求し、その情報を使用して、アップロードしてリモートで実行するスクリプトを生成することができます。

つまり、カピストラノには、インタラクティブ性の可能性がある低レベルの拡張ポイントがあります。これは、カスタムコードの多くを実行するために、あなたが必要になりますが、件名にいくつかのドキュメントがあります:いくつかのケースでは

https://github.com/capistrano/sshkit#interactive-commands

は、あなたがプログラムでコマンドとの相互作用を駆動することもできますが、これは可能execute,captureまたはtestコマンドを使用したときに:interaction_handlerオプションを指定することによって実現されます。

関連する問題