当通过STDIN提供输入时,heroku运行rails控制台挂起

时间:2015-02-03 12:59:31

标签: ruby-on-rails heroku

使用heroku提供的repo,我可以轻松获得一个最小的工作栏app

在我的本地计算机上,我使用heroku toolbelt与应用程序进行交互:

$ heroku run rails c
Running `rails c` attached to terminal... up, run.7546
putsLoading production environment (Rails 4.0.3)
irb(main):001:0> puts 'hello'
hello
=> nil
irb(main):002:0>

我使用<Ctrl-D>退出,但它没有在终端上显示。到目前为止一切都很好。

但是,如果我通过将命令传递给rails c来启动它,我无法退出控制台。

$echo 'puts 1' | heroku run rails c
Running `rails c` attached to terminal... up, run.3181
puts 1
Loading production environment (Rails 4.0.3)
irb(main):001:0> puts 1
1
=> nil
irb(main):002:0> exit

<Ctrl-D>exit都不起作用。它似乎永远陷入困境。

在另一个shell中,heroku ps的相关输出:

=== run: one-off processes
run.3181 (1X): up 2015/02/03 13:46:45 (~ 6m ago): `rails c`

如果有人可以对这种行为有所了解,那就太好了。

2 个答案:

答案 0 :(得分:2)

似乎是heroku命令行工具中的一个错误。故障单已创建here

目前,我认为@sadleb的答案,将exit附加到命令字符串,就足以练习了。

编辑:

到目前为止,heroku团队提出了一个变通方法/解决方案,在上面的github问题中提到:

echo 'puts 1' | heroku run --no-tty rails c

答案 1 :(得分:1)

尝试$echo 'puts 1; exit' | heroku run rails c

我无法阐明为什么你必须这样做......