RubyMine 2018.3 tries to start already running Docker container when running a test, then kills it

Answered

I have a project with a docker-compose.yml file containing a "web" service. When I attempt to run a test from within RubyMine, I see the following output:

Testing started at 09:59 ...
/usr/local/bin/docker-compose -f /Users/jy/Development/@Rails/project/docker-compose.yml -f /Users/jy/Library/Caches/RubyMine2018.3/tmp/docker-compose.override.35.yml up --exit-code-from web --abort-on-container-exit web
ERROR: 2 matches found based on name: network project_default is ambiguous

But the web service is already up and running, as I need to access it from the command line as well. RubyMine is not only causing problems by insisting on starting the service itself, but the "--abort-on-container-exit" is killing an already running container, meaning I can no longer access the dev site in the browser until I manually restart it.

RubyMine should really use the logic "if container is not already running, then start the container, else skip to just running the test" here — the only command it needs to run is

/usr/local/bin/docker-compose web bundle exec rspec

(Note that the page at https://www.jetbrains.com/help/ruby/using-docker-compose-as-a-remote-interpreter.html has sections for "running your application under Docker-Compose" and "debugging your application under Docker-Compose", but not "testing your application under Docker-Compose". If there's any special configuration that needs to be done, it would be useful to mention it in there!)

Even when I do manage to get it to actually try running a test using docker-compose, it fails because it can't load teamcity/spec/runner/formatter/teamcity/formatter. This appears to be stored in the RubyMine application, and RubyMine does not appear to make any effort to move it into the Docker service. How do I manually install this?

I'm having to go back to running tests from the command line, which is a major pain, especially since the context menu in "Structure" doesn't seem to have way of copying the full name of the test (in the screenshot, I would expect to have "Issues with an Admin-level user when listing issues with no issues shows a message" on my clipboard).

Please tell me there's a better way than this…

 

4 comments

I've started to learn how to use Docker, and this has been a bit of a road-block for me. Glad to see that it's being worked on.

1

Hello John,

we have a corresponding request for supporting stateful containers, that would help in your case:

https://youtrack.jetbrains.com/issue/RUBY-19849

0

Thanks — is there at least a way for me to remove "--abort-on-container-exit" from the flags that RubyMine passes?

0

Hello John,

unfortunately at the moment it's not possible so please add your vote to RUBY-19849.

0

Please sign in to leave a comment.