2017-01-09 96 views
-1

我有一个脚本,通过Readline.readline提示用户输入。我想通过Capistrano远程执行它,但是看起来Cap不像Readline那么好。是否有任何其他方式提示用户输入已执行的脚本?我需要能够在帽子之外执行脚本,所以我不能将其设置为帽子任务并使用askCapistrano和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

Capistrano的并不打算运行需要交互式输入脚本。我的建议是改变你的方法。例如,您可以在本地提示您需要的信息(即使用ask),然后使用该信息生成您上传并远程执行的脚本。

也就是说,Capistrano中有一个低级别的扩展点,允许一些交互性的可能性。它会要求你运行大量的自定义代码,但是有一些关于这个问题的文件:

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

在某些情况下,你可能想以编程方式驱动的命令互动,这可能是当您使用execute,capturetest命令时,通过指定:interaction_handler选项来实现。