ddollar / foreman

Manage Procfile-based applications

Home Page:http://ddollar.github.com/foreman

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Cannot read echo when using byebug or debugger tool

thedon-chris opened this issue · comments

Hello,

I am using foreman alongside a debugger tool inside of Ruby on Rails applications. Foreman is managing my puma server, redis-server, workers, and mailcatcher.

When I use a debugger tool alongside foreman, I cannot read the echo of my commands. This becomes really frustrating during the debugging process.

Can anyone please help?

I am also experiencing this issue. In the debugger, I am not able to see what I am typing.

Yep, there's a closed issue #58 here with some old stuff about using pry-remote. But haven't been able to get it to work yet

I've faced a similar problem and looks like I've found a good workaround - https://github.com/kimmobrunfeldt/concurrently
So all you need is to write a script that feeds arguments to it.

Here is my example:
concurrently -p '[{name}]' --handle-input -n back,front -c 'black.bgGreen,black.bgCyan' 'rails s' 'bin/webpack-dev-server'

Here is how it looks like:
2018-11-20 17 21 06

PS most important flag here is --handle-input. Debugging just works

@thedon-chris Is this still an issue?

commented

Still an issue

banged my head around this for a while then realized ... wait... I can just use 2 terminal tab, one for webpack-dev-server and one for rails. Duh.

commented

@dchersey You can also try the following if you want them on one terminal:
./bin/webpack-dev-server & bundle exec rails s && fg

You still see the output of both, with rails being the main process (so it accepts input etc in pry)

Ever since I found this I stopped bothering with foreman.

Only caveat is you need to CtrlC twice to close both programs, but it doesn't really matter.

banged my head around this for a while then realized ... wait... I can just use 2 terminal tab, one for webpack-dev-server and one for rails. Duh.

When I want to debug I usually do this. When working in normal flow, keep using Foreman.

If it helps anyone here, I created a program https://github.com/LoganBresnahan/meow that utilizes GNU's fg to manage my commands and let's me run commands automatically in different terminal tabs. Foreman is a great gem and I stumbled here trying to solve my own issues with pry. My program is just shell scripts and after figuring out file descriptors pry will work.

There was a solution proposed in #536 but it was ultimately not accepted. That PR cites pry/pry#1290, which I believe is the same bug being reported here.

@ddollar, would you potentially be open to reconsidering this approach? Or is there another possible solution you'd be amenable to? There seems to be a lot of demand from both pry and foreman users to figure out this problem.

@ddollar mentioned that foreman wouldn't be able to figure out which process read the data from stdin. I think that a good compromise that would solve 99% of use cases would be to allow only the first process to read the stdin.

I've faced a similar problem and looks like I've found a good workaround - https://github.com/kimmobrunfeldt/concurrently So all you need is to write a script that feeds arguments to it.

Here is my example: concurrently -p '[{name}]' --handle-input -n back,front -c 'black.bgGreen,black.bgCyan' 'rails s' 'bin/webpack-dev-server'

Here is how it looks like: 2018-11-20 17 21 06

PS most important flag here is --handle-input. Debugging just works

I've been struggling to have a multiprocess tool that will run from 1 docker container and the debug will work from console. After spending a lot of time searching the workaround with foreman and overmind that npm package solved it, thanks!