RubyMine 2017.2 EAP 1: Docker Compose!

Hey all,

Today we are announcing RubyMine 2017.2 EAP 1 (build 172.2273.6), the first update in a series of Early Access Programs for v2017.2 that will be released in the middle of the summer. Here’s what we’ve got for you:

Docker Compose

Docker support was announced in the RubyMine 2017.1 release post, but back then it was missing Docker Compose which many of you expected. Today we are bringing it out! Here’s how you set up Compose in RubyMine:

First, you should have a Docker project running through docker-compose. In previous releases you also had to install the Docker integration plugin, but now it’s bundled in the IDE, so no additional actions are required.

The next step might be non-obvious because currently RubyMine doesn’t provide any special interface to deal with the Docker environment or the apps running with Docker.

In RubyMine, open a folder containing your Docker project (File | Open). Skip any notifications in RubyMine as you haven’t specified your Docker SDK yet, so at this point the IDE assumes that you are running a local project:

open_docker_folder

Open your SDK settings (Preferences / Settings | Languages & Frameworks | Ruby SDK and Gems), and add Docker Compose as a new remote interpreter (New remote | Docker Compose):

set_up_docker_compose_rails

As you can see, RubyMine locates your Compose file automatically, but you can always manually specify a path to docker-compose.yml.

Also, don’t forget to choose which Service to run. As I’m adding a plain Compose Rails app, I’ve chosen web.

When you click OK, the IDE will run and add it to the list of available SDKs. This will probably take a minute. Once done, choose your newly added Docker SDK, and click Apply so that RubyMine starts reindexing your project. Then click OK:

run_docker_compose_rubymine

Congrats! Now you can work with your multiple Docker containers like with your local apps, taking advantage of the whole set of RubyMine features from code analysis and editing tools to debugging and testing suites!

One thing to remember: While RubyMine is able to detect any new gems you add to your Gemfile, it would still suggest to install them locally. Instead, when you update your Gemfile with new gems, run docker-compose build from the terminal (View | Tool windows | Terminal), and re-run your project.

Revert selected commit in Git log

As you may have guessed, Revert is the implementation of git revert, which allows you to remove any registered changes by adding a new commit. This operation doesn’t change the existing commit history, and is used for public branches:

git_revert_rubymine

Just like with Git, the IDE will warn you about conflicts, and won’t let you revert in case you have yet uncommitted changes:

git_revert_failed_rubymine

JavaScript improvements

This update features a number of JS improvements coming to RubyMine from WebStorm:

  • Parameter hints in TypeScript
  • Auto imports in JavaScript
  • Completion and auto import for React stateless components
  • Code rearrangement for JavaScript and TypeScript
  • Completion and auto import for React stateless components
  • New code style options for JavaScript and TypeScript

Read more about these updates in the related blog post.

Download this EAP from Confluence.

See the release notes for the full list of improvements, and use our tracker to submit any issues you encounter.

Share your thoughts on this update in the comments below & join us on Slack!

Cheers,

Your RubyMine team

This entry was posted in Announcement, WhatsMining and tagged , , , , . Bookmark the permalink.

48 Responses to RubyMine 2017.2 EAP 1: Docker Compose!

  1. Benjamin Dobell says:

    Why is “Preferences / Settings | Languages & Frameworks | Ruby SDK and Gems” missing from IDEA with the Ruby plugin installed? It’s been that way for quite some time. It’s a pain having to install RubyMine just because those settings are missing.

  2. Pingback: RubyMine 2017.2 EAP 2: Breadcrumbs for Ruby | RubyMine Blog

  3. Pingback: RubyMine 2017.2 EAP 5: Debugging with Docker Compose | RubyMine Blog

  4. Luciano Leveroni says:

    This is an excellent feature! :)
    However, after trying it out, I encouter a problem. First, version 3 of docker compose seems unsupported. After changing my file to 2.2, error disappeared. But after clicking OK (after selecting Docker Compose as a interpreter), the “docker-compuse up” popup appears but the dialog does not close! So it’s fails to add the configuration remote interpreter :(
    Tested on RubyMine 2017.2 RC.

    • Hi Luciano,

      You are right, currently we don’t support Docker Compose version 3; it’s a known issue https://youtrack.jetbrains.com/issue/IDEA-174380

      In regard to your second issue: RubyMine needs to run the container in order to take Ruby SDK from it. How long have you been waiting before aborting the action?

      • Luciano says:

        Hi Artem,

        Thanks for the quick reply.

        Regarding the second issue, I’ve waited for about a minute without success (from command-line, it takes about 5 secs to get docker compose up). The ‘docker-compose up’ popup disappears also quickly (like in the demo video above). The problem is that I’m left with Configure Remote Ruby Interpreter dialog open. I can close it but no new interpreter is added.

        • Luciano,

          I’ve probably confused you with the video. It was cut as I can’t attach heavy files to the post. Next time I’ll add some sign showing that an action shown takes time to complete. Sorry about that.

          It actually takes about a minute to complete, but probably more in some cases. The popup window can show up a few times during the process. As for Configure Remote Ruby Interpreter dialog, it may also show up a couple of times including the first time without Docker Compose added.

          Could you please give it another try, wait for a little more than before, and see it it helps? If it doesn’t, will submit the issue and start the investigation.

          Thank you

        • Hi Luciano,

          Then it looks like a bug. We’ve submitted an issue based on your comments, see https://youtrack.jetbrains.com/issue/RUBY-19798. Please add details if any.

        • Please also attach info from your about screen to the issue (RubyMine | About)

    • Thank you!
      As you are now watching this issue, you will be notified about any changes.

  5. Gustavo Aráujo says:

    Plans for the debug also works in “terminal” mode

  6. Gustavo Aráujo says:

    Ah! I almost forgot. You did a beautiful job. Congratulations. :)

  7. Pingback: RubyMine 2017.2 Released: Docker Compose, RuboCop Quick-fixes, Better Version Control, and more | RubyMine Blog

  8. Jarek says:

    Great that you are adding features around docker – until I can work fully with Docker and RubyMine I’m holding with renewing my subscription.

    So I’ve tried 2017.2, and I found the new option in build preferences – macOS which connects to my docker server without a problem. Nice.

    But then I’m stuck. I tried docker compose, added all env. vars. then changed ruby interpreter path, selected web service. Clicking OK shows “docker compose up” dialog, and then it disappears and new interpreter is added. It adds correct ruby version so it kind of knows what should be done. It’s just that it doesn’t include any external libs after clicking OK/apply. It shows some dialogs couple of times but ultimately there’s no outcome.

    Looking into compose logs I see some weird behaviour. I see that web container is started, some logs appear and it suddenly shuts down with: “web_1 exited with code 0”. Then immediately another container is run, some more logs are showing and it quits again. And that happens couple of times and then, after one more quit, nothing else happens.

    It looks like that:
    “…
    web_1 exited with code 0
    bundle_1 exited with code 0
    web_1 | 319web_1 exited with code 0
    bundle_1 exited with code 0
    web_1 | /root/.gem/ruby/2.2.0:/usr/local/lib/ruby/gems/2.2.0:/usr/local/bundle
    web_1 exited with code 0
    bundle_1 exited with code 0
    web_1 | use require ‘rack/cache/entity_store’
    web_1 | use require ‘rack/cache/meta_store’
    web_1 | warning: parser/current is loading parser/ruby22, which recognizes
    web_1 | warning: 2.2.3-compliant syntax, but you are running 2.2.5.
    web_1 | warning: please see https://github.com/whitequark/parser#compatibility-with-ruby-mri.
    web_1 exited with code 1
    bundle_1 exited with code 0
    web_1 | The git source git://github.com/codequest-eu/acts_as_commentable_with_threading.git uses the git protocol, which transmits data without encryption. Disable this warning with bundle config git.allow_insecure true, or switch to the https protocol to keep your data secure.
    web_1 | The git source git://github.com/maclover7/trix.git uses the git protocol, which transmits data without encryption. Disable this warning with bundle config git.allow_insecure true, or switch to the https protocol to keep your data secure.
    web_1 | The git source git://github.com/codequest-eu/after_party.git uses the git protocol, which transmits data without encryption. Disable this warning with bundle config git.allow_insecure true, or switch to the https protocol to keep your data secure.
    web_1 | Found no changes, using resolution from the lockfile
    web_1 | The Gemfile’s dependencies are satisfied
    web_1 exited with code 0
    bundle_1 exited with code 0
    web_1 | The git source git://github.com/codequest-eu/acts_as_commentable_with_threading.git uses the git protocol, which transmits data without encryption. Disable this warning with bundle config git.allow_insecure true, or switch to the https protocol to keep your data secure.
    web_1 | The git source git://github.com/maclover7/trix.git uses the git protocol, which transmits data without encryption. Disable this warning with bundle config git.allow_insecure true, or switch to the https protocol to keep your data secure.
    web_1 | The git source git://github.com/codequest-eu/after_party.git uses the git protocol, which transmits data without encryption. Disable this warning with bundle config git.allow_insecure true, or switch to the https protocol to keep your data secure.
    web_1 | Found no changes, using resolution from the lockfile
    web_1 | The Gemfile’s dependencies are satisfied
    web_1 exited with code 0
    …”

    Once, I got to the point where I could see some rake tasks log like:
    “…
    web_1 | rake db:version
    web_1 | environment
    web_1 | load_config
    web_1 | rake default
    web_1 | test
    web_1 | rake doc
    web_1 | rake doc/api
    web_1 | rake doc/api/index.html
    …”
    But this was interrupted by some SIGTERM – which could be seen in RubyMine logs.

    My docker setup is that due to slow files syncing in macOS, I use unison to sync files between containers and host. Then, I use separate bundle container to get the bundle-cache functionality – it maps bundled libs directory to the web container. Not sure what more details I could give you to describe the issue better. Let me know.

    I don’t know how to see logs of what RubyMine is doing. Why it starts and closes new containers? It seems like they are closed after they successfully started.

    • Jarek says:

      I’m still playing with it, and having other containers using the same compose config I tried to use other. Sidekiq one exited with missing Gemfile or .bundle/ directory:


      sidekiq_1 | Could not locate Gemfile or .bundle/ directory
      sidekiq_1 | Bundler::GemfileNotFound: Could not locate Gemfile or .bundle/ directory
      sidekiq_1 | /usr/local/lib/ruby/gems/2.2.0/gems/bundler-1.13.6/lib/bundler.rb:174:in rescue in root'
      sidekiq_1 | /usr/local/lib/ruby/gems/2.2.0/gems/bundler-1.13.6/lib/bundler.rb:170:in
      root’

      sidekiq_1 exited with code 10

      But then it yet again run the container and exit code was different:


      sidekiq_1 | The git source git://github.com/codequest-eu/acts_as_commentable_with_threading.git uses the git protocol, which transmits data without encryption. Disable this warning with bundle config git.allow_insecure true, or switch to the https protocol to keep your data secure.
      sidekiq_1 | The git source git://github.com/maclover7/trix.git uses the git protocol, which transmits data without encryption. Disable this warning with bundle config git.allow_insecure true, or switch to the https protocol to keep your data secure.
      sidekiq_1 | The git source git://github.com/codequest-eu/after_party.git uses the git protocol, which transmits data without encryption. Disable this warning with bundle config git.allow_insecure true, or switch to the https protocol to keep your data secure.
      sidekiq_1 | Found no changes, using resolution from the lockfile
      sidekiq_1 | The Gemfile’s dependencies are satisfied
      sidekiq_1 exited with code 0

      For the first error – not sure why it happens – bundle container is running so the .bundle/ directory should be there, and Gemfile is present as well in the WORKDIR.

      • Hi Jarek,

        Thank you and sorry for the trouble. I’m passing this on to the dev team, and hopefully will get back to you soon.

        • Jarek says:

          Hi Artem,

          thanks for the quick response and for passing it to the dev team. Maybe it would make things easier if you could tell what commands are run during those mystic “docker compose up” dialogs. It might reveal some dead ends for my case.

    • Andrey Vokin says:

      You said that you had specified environment variables. Had you changed variable “PATH”?

      • Jarek says:

        “PATH” is not changed. “BUNDLE_PATH” is changed to point to a directory where bundle cache is mapped to.

      • Jarek says:

        Please also check my next post, which should be an anwser here – I posted logs.

      • Jarek says:

        Also – please check this blog post to check how and why we use bundle cache for Rails. It seems to be commonly used. It seems like RubyMine doesn’t know how to deal with this setup.

        https://medium.com/@fbzga/how-to-cache-bundle-install-with-docker-7bed453a5800

        • Andrey Vokin says:

          Thank you, we’ll investigate this case.

          • Jarek says:

            I changed to Docker / Tools setting and provided exact path to docker-compose and that removed the missing docker-compose error. But it still timeouts on this:

            “2017-07-20 21:08:59,331 [117849163] INFO – g.FileBasedIndexProjectHandler – Reindexing refreshed files: 0 to update, calculated in 0ms
            2017-07-20 21:08:59,396 [117849228] INFO – .CloudSilentLoggingHandlerImpl – Creating container…
            2017-07-20 21:09:07,987 [117857819] INFO – .run.runtime.DockerExecProcess – com.github.dockerjava.api.exception.NotModifiedException: , caused by: com.github.dockerjava.api.exception.NotModifiedException:
            2017-07-20 21:09:14,951 [117864783] INFO – .run.runtime.DockerExecProcess – com.github.dockerjava.api.exception.NotModifiedException: , caused by: com.github.dockerjava.api.exception.NotModifiedException:
            2017-07-20 21:09:44,395 [117894227] ERROR – tellij.execution.ExecutionMode – Timeout (30 sec) on executing: /usr/local/bin/ruby /opt/project/script/rails generate
            java.lang.Throwable
            at com.intellij.openapi.diagnostic.Logger.error(Logger.java:132)
            at com.intellij.execution.ExecutionModes.a(ExecutionModes.java:32)
            at com.intellij.execution.ExecutionHelper$4.a(ExecutionHelper.java:464)
            at com.intellij.openapi.application.impl.ApplicationImpl$2.run(ApplicationImpl.java:343)
            at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
            at java.util.concurrent.FutureTask.run(FutureTask.java:266)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
            at java.lang.Thread.run(Thread.java:745)
            2017-07-20 21:09:44,396 [117894228] ERROR – tellij.execution.ExecutionMode – RubyMine 2017.2 Build #RM-172.3317.60
            2017-07-20 21:09:44,397 [117894229] ERROR – tellij.execution.ExecutionMode – JDK: 1.8.0_152-release
            2017-07-20 21:09:44,397 [117894229] ERROR – tellij.execution.ExecutionMode – VM: OpenJDK 64-Bit Server VM
            2017-07-20 21:09:44,397 [117894229] ERROR – tellij.execution.ExecutionMode – Vendor: JetBrains s.r.o
            2017-07-20 21:09:44,397 [117894229] ERROR – tellij.execution.ExecutionMode – OS: Mac OS X
            2017-07-20 21:09:44,405 [117894237] INFO – ions.generators.GeneratorsUtil – use require ‘rack/cache/entity_store’
            use require ‘rack/cache/meta_store’
            warning: parser/current is loading parser/ruby22, which recognizes
            warning: 2.2.3-compliant syntax, but you are running 2.2.5.
            warning: please see https://github.com/whitequark/parser#compatibility-with-ruby-mri.

            Exit code -1 “

  9. Jarek says:

    Artem,

    Sorry for spamming you but I’ve located log files, and this is what they show just after clicking “OK” in the create remote interpreter window and before clicking “OK” in the Properties / SDK window – note the timeout on the rails generate task.
    Then I added logs that appear once I click “OK” in the SDK window.

    2017-07-18 23:45:36,970 [2751804] INFO – ns.plugins.remotesdk.RSyncUtil – rsync version: rsync version 2.6.9 protocol version 29
    2017-07-18 23:45:53,578 [2768412] INFO – ns.plugins.remotesdk.RSyncUtil – rsync version: rsync version 2.6.9 protocol version 29
    2017-07-18 23:45:55,865 [2770699] INFO – ns.plugins.remotesdk.RSyncUtil – rsync version: rsync version 2.6.9 protocol version 29
    2017-07-18 23:46:02,334 [2777168] INFO – se.DockerComposeProjectService – Unable to get Docker Compose version using “docker-compose” executable. Cannot run program “docker-compose”: error=2, No such file or directory
    2017-07-18 23:46:02,336 [2777170] INFO – .CloudSilentLoggingHandlerImpl – Creating container…
    2017-07-18 23:46:07,228 [2782062] INFO – .run.runtime.DockerExecProcess – com.github.dockerjava.api.exception.NotModifiedException: , caused by: com.github.dockerjava.api.exception.NotModifiedException:
    2017-07-18 23:46:07,360 [2782194] INFO – .CloudSilentLoggingHandlerImpl – Creating container…
    2017-07-18 23:46:07,635 [2782469] INFO – ns.plugins.remotesdk.RSyncUtil – rsync version: rsync version 2.6.9 protocol version 29
    2017-07-18 23:46:12,233 [2787067] INFO – .run.runtime.DockerExecProcess – com.github.dockerjava.api.exception.NotModifiedException: , caused by: com.github.dockerjava.api.exception.NotModifiedException:
    2017-07-18 23:46:12,333 [2787167] INFO – yCreateRemoteInterpreterDialog – initializing Remote:ruby-2.2.5-p319: ver.2.2.5p319 ( revision 54774) p319 (docker-compose://[/Users/jarek/Dev/Rails/project/docker-compose.yml]:rubymine/ruby)
    2017-07-18 23:46:12,333 [2787167] INFO – yCreateRemoteInterpreterDialog – localGemsBinPath=/Users/jarek/Library/Caches/RubyMine2017.2/ruby_stubs/-696822502/-841764391, remoteGemsBinPath=/usr/local/bin
    2017-07-18 23:46:12,397 [2787231] INFO – .CloudSilentLoggingHandlerImpl – Creating container…
    2017-07-18 23:46:18,075 [2792909] INFO – yCreateRemoteInterpreterDialog – localPath=/Users/jarek/Library/Caches/RubyMine2017.2/ruby_stubs/-696822502/890085171/bin, remotePath=/root/.gem/ruby/2.2.0/bin
    2017-07-18 23:46:18,075 [2792909] INFO – yCreateRemoteInterpreterDialog – localPath=/Users/jarek/Library/Caches/RubyMine2017.2/ruby_stubs/-696822502/890085171/gems, remotePath=/root/.gem/ruby/2.2.0/gems
    2017-07-18 23:46:18,075 [2792909] INFO – yCreateRemoteInterpreterDialog – localPath=/Users/jarek/Library/Caches/RubyMine2017.2/ruby_stubs/-696822502/890085171/specifications, remotePath=/root/.gem/ruby/2.2.0/specifications
    2017-07-18 23:46:18,075 [2792909] INFO – yCreateRemoteInterpreterDialog – localPath=/Users/jarek/Library/Caches/RubyMine2017.2/ruby_stubs/-696822502/890085171/bundler, remotePath=/root/.gem/ruby/2.2.0/bundler
    2017-07-18 23:46:18,075 [2792909] INFO – yCreateRemoteInterpreterDialog – localPath=/Users/jarek/Library/Caches/RubyMine2017.2/ruby_stubs/-696822502/-472251510/bin, remotePath=/usr/local/lib/ruby/gems/2.2.0/bin
    2017-07-18 23:46:18,075 [2792909] INFO – yCreateRemoteInterpreterDialog – localPath=/Users/jarek/Library/Caches/RubyMine2017.2/ruby_stubs/-696822502/-472251510/gems, remotePath=/usr/local/lib/ruby/gems/2.2.0/gems
    2017-07-18 23:46:18,075 [2792909] INFO – yCreateRemoteInterpreterDialog – localPath=/Users/jarek/Library/Caches/RubyMine2017.2/ruby_stubs/-696822502/-472251510/specifications, remotePath=/usr/local/lib/ruby/gems/2.2.0/specifications
    2017-07-18 23:46:18,075 [2792909] INFO – yCreateRemoteInterpreterDialog – localPath=/Users/jarek/Library/Caches/RubyMine2017.2/ruby_stubs/-696822502/-472251510/bundler, remotePath=/usr/local/lib/ruby/gems/2.2.0/bundler
    2017-07-18 23:46:18,075 [2792909] INFO – yCreateRemoteInterpreterDialog – localPath=/Users/jarek/Library/Caches/RubyMine2017.2/ruby_stubs/-696822502/1322250864/bin, remotePath=/usr/local/bundle/bin
    2017-07-18 23:46:18,075 [2792909] INFO – yCreateRemoteInterpreterDialog – localPath=/Users/jarek/Library/Caches/RubyMine2017.2/ruby_stubs/-696822502/1322250864/gems, remotePath=/usr/local/bundle/gems
    2017-07-18 23:46:18,076 [2792910] INFO – yCreateRemoteInterpreterDialog – localPath=/Users/jarek/Library/Caches/RubyMine2017.2/ruby_stubs/-696822502/1322250864/specifications, remotePath=/usr/local/bundle/specifications
    2017-07-18 23:46:18,076 [2792910] INFO – yCreateRemoteInterpreterDialog – localPath=/Users/jarek/Library/Caches/RubyMine2017.2/ruby_stubs/-696822502/1322250864/bundler, remotePath=/usr/local/bundle/bundler
    2017-07-18 23:46:18,125 [2792959] INFO – .run.runtime.DockerExecProcess – com.github.dockerjava.api.exception.NotModifiedException: , caused by: com.github.dockerjava.api.exception.NotModifiedException:
    2017-07-18 23:46:18,135 [2792969] INFO – .CloudSilentLoggingHandlerImpl – Creating container…
    2017-07-18 23:46:24,485 [2799319] INFO – yCreateRemoteInterpreterDialog – Remote:ruby-2.2.5-p319: ver.2.2.5p319 ( revision 54774) p319 (docker-compose://[/Users/jarek/Dev/Rails/project/docker-compose.yml]:rubymine/ruby) initialized
    2017-07-18 23:46:24,544 [2799378] INFO – pl.ProjectRootManagerComponent – project roots have changed
    2017-07-18 23:46:25,000 [2799834] INFO – .diagnostic.PerformanceWatcher – Pushing properties took 71ms; general responsiveness: ok; EDT responsiveness: ok
    2017-07-18 23:46:25,012 [2799846] INFO – .diagnostic.PerformanceWatcher – Indexable file iteration took 9ms; general responsiveness: ok; EDT responsiveness: ok
    2017-07-18 23:46:25,077 [2799911] INFO – g.FileBasedIndexProjectHandler – Reindexing refreshed files: 0 to update, calculated in 0ms
    2017-07-18 23:46:25,140 [2799974] INFO – .CloudSilentLoggingHandlerImpl – Creating container…
    2017-07-18 23:46:30,604 [2805438] INFO – .run.runtime.DockerExecProcess – com.github.dockerjava.api.exception.NotModifiedException: , caused by: com.github.dockerjava.api.exception.NotModifiedException:
    2017-07-18 23:47:00,087 [2834921] ERROR – tellij.execution.ExecutionMode – Timeout (30 sec) on executing: ruby /Users/jarek/Dev/Rails/project/script/rails generate
    java.lang.Throwable
    at com.intellij.openapi.diagnostic.Logger.error(Logger.java:132)
    at com.intellij.execution.ExecutionModes.a(ExecutionModes.java:32)
    at com.intellij.execution.ExecutionHelper$4.a(ExecutionHelper.java:464)
    at com.intellij.openapi.application.impl.ApplicationImpl$2.run(ApplicationImpl.java:343)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
    2017-07-18 23:47:00,090 [2834924] ERROR – tellij.execution.ExecutionMode – RubyMine 2017.2 Build #RM-172.3317.60
    2017-07-18 23:47:00,090 [2834924] ERROR – tellij.execution.ExecutionMode – JDK: 1.8.0_152-release
    2017-07-18 23:47:00,091 [2834925] ERROR – tellij.execution.ExecutionMode – VM: OpenJDK 64-Bit Server VM
    2017-07-18 23:47:00,091 [2834925] ERROR – tellij.execution.ExecutionMode – Vendor: JetBrains s.r.o
    2017-07-18 23:47:00,091 [2834925] ERROR – tellij.execution.ExecutionMode – OS: Mac OS X
    2017-07-18 23:47:00,091 [2834925] ERROR – tellij.execution.ExecutionMode – Last Action: EditorLineStart
    2017-07-18 23:47:00,093 [2834927] INFO – ions.generators.GeneratorsUtil – use require ‘rack/cache/entity_store’
    use require ‘rack/cache/meta_store’
    warning: parser/current is loading parser/ruby22, which recognizes
    warning: 2.2.3-compliant syntax, but you are running 2.2.5.
    warning: please see https://github.com/whitequark/parser#compatibility-with-ruby-mri.

    Exit code -1

    logs that appear once I click “OK” in the SDK window.

    2017-07-18 23:54:16,479 [3271313] INFO – se.DockerComposeProjectService – Unable to get Docker Compose version using “docker-compose” executable. Cannot run program “docker-compose”: error=2, No such file or directory
    2017-07-18 23:54:16,481 [3271315] INFO – .CloudSilentLoggingHandlerImpl – Creating container…
    2017-07-18 23:54:16,982 [3271816] INFO – pl.ProjectRootManagerComponent – project roots have changed
    2017-07-18 23:54:17,265 [3272099] INFO – .diagnostic.PerformanceWatcher – Pushing properties took 119ms; general responsiveness: ok; EDT responsiveness: ok
    2017-07-18 23:54:17,314 [3272148] INFO – .diagnostic.PerformanceWatcher – Indexable file iteration took 49ms; general responsiveness: ok; EDT responsiveness: ok
    2017-07-18 23:54:22,472 [3277306] INFO – .run.runtime.DockerExecProcess – com.github.dockerjava.api.exception.NotModifiedException: , caused by: com.github.dockerjava.api.exception.NotModifiedException:
    2017-07-18 23:54:23,652 [3278486] INFO – .CloudSilentLoggingHandlerImpl – Creating container…
    2017-07-18 23:54:28,564 [3283398] INFO – .run.runtime.DockerExecProcess – com.github.dockerjava.api.exception.NotModifiedException: , caused by: com.github.dockerjava.api.exception.NotModifiedException:
    2017-07-18 23:55:51,032 [3365866] INFO – ns.plugins.remotesdk.RSyncUtil – rsync version: rsync version 2.6.9 protocol version 29
    2017-07-18 23:56:18,915 [3393749] INFO – ns.plugins.remotesdk.RSyncUtil – rsync version: rsync version 2.6.9 protocol version 29

  10. Payam says:

    Did you mean to say docker-compose build in the post instead?

  11. Romanos says:

    Hello there! Thanks for the new feature!

    I can’t seem to get past the configuration of the remote ruby path interpreter.
    I get a: Can’t create Ruby SDK – Can’t find ruby by provided interpreter path

    I’ve tried with plain ruby, host’s and container’s ruby absolute path
    /Users/romdim/.rvm/rubies/ruby-2.4.1/bin/ruby and
    /usr/local/bin/ruby

    Thanks in advance!

    • Theodoros says:

      I have the same problem. I was looking at the IDE’s log file and there seems to be an invalid environment variable that triggers an exception:

      com.intellij.remote.RemoteSdkException: com.github.dockerjava.api.exception.InternalServerErrorException: invalid environment variable: =::=::\

      And indeed, when I try to edit the env vars, I see this: http://imgur.com/JdpqJgF

      I’m not sure where it inherits this weird variable from. Disabling the checkbox “Include parent environment variables” seems to do the trick.

      • Romanos says:

        I work on a Mac, so my issue was found from logs:
        2017-07-19 17:02:16,733 [18301168] INFO – ntellij.docker.DockerConnector – Unable to load bundled client library files from /Applications/RubyMine.app/Contents/plugins/Docker/lib/Docker.jar/rt
        2017-07-19 17:02:16,737 [18301172] INFO – gins.ruby.ruby.sdk.RubySdkType – Unable to get full version
        com.intellij.remote.RemoteSdkException: com.github.dockerjava.api.exception.DockerClientException: Enabled TLS verification (DOCKER_TLS_VERIFY=1) but certificate path (DOCKER_CERT_PATH) ‘/Users/romdim/.docker/machine/machines/default’ doesn’t exist.

        And the solution was found here:
        https://stackoverflow.com/questions/41027346/pycharm-docker-remote-python-interpreter

        tl;dr: For MacOs go to Preferences->Build, Execution, Deployment->Docker and choose Docker for Mac if that’s what you’ve installed. Wait for it and proceed as documented in this tutorial!

      • Cody says:

        That error had been driving me mad for a while now, but disabling the parent environment variables option worked perfectly.

        Thanks for the pointer as I’d still be sitting here scratching my head.

        • Dmitry says:

          I have same error (“invalid environment variable: =::=::\\”) in phpstorm 2017.2.4 when tried to add php interpreter from docker-compose.

          Unchecking “include parent environment variables” solve the problem (http://joxi.ru/vAWYMLzu14Xbgm), thanks to @Cody!

    • Andrey Vokin says:

      What OS do you use?

  12. Stefan Mayer-Popp says:

    I successfully added docker-compose as remote SDK. When i setup the configuration and choose my docker compose file and hit run i get the following error in consolse.

    Deploying ‘Compose: docker-compose.yml’…
    Failed to deploy ‘Compose: docker-compose.yml’: Cannot run program “docker-compose” (in directory “/Users/stefanmayerpopp/Developer/RubymineProjects/atlassian_bot”): error=2, No such file or directory

    Did anyone had a similar error that docker-compose could not be found? I am on macOS Sierra.


    ~/D/d/atlassian_bot_docker >>>  which docker-compose
    /usr/local/bin/docker-compose

    • Stefan Mayer-Popp says:

      A possible solution is to open

      Preferences -> Build, Execution, Deployment -> Docker -> Tools -> Docker compose executable

      I put the entire path to it, like its already present for docker-machine. In my case
      /usr/local/bin/docker-compose

      Hope it helps someone else too.

      • Jarek says:

        Stefan – it helped me getting a step further – thanks a lot!

        It’s still not working for me though – looking for help in another answer here.

  13. Tomasz Korzeniowski says:

    RubyMine found the docker-compose file. Unfortunately, no gems were downloaded, and I get “No Rails found in SDK” error. Did anyone had a similar error?

  14. Henrik says:

    Hi, thanks a lot for providing support for docker and docker-compose!

    Is there a guide somewhere that includes all the steps necessary for setting this up?

    In your video you already have a server named ‘Docker’ – how should this be configured?

    Thanks

    • Hi Henrik,

      There’s actually nothing to be configured as soon as you have opened your Docker project and set up Docker as a remote SDK (these actions are described in this article). You should be able to run the dev server as soon as you have that done.

      Could you describe your issues in more detail?

      • Henrik says:

        I think I’ve sorted it out… The first time I went into the Ruby SDK and Gems setting to add the Docker-compose, the ‘Server’ dropdown was not filled, and I couldn’t complete setup without it. As it turned out it was easy enough to configure just by selecting Unix socket in the ‘New…’ dialog.

  15. Juozas Beniusis says:

    Hi,

    Thank you for the support for Docker Compose!

    I’ve been trying to add a remote docker compose interpreter, but after I click “OK”, I am shown and error message “java.lang.NullPointerException”.

    Haven’t seen any posts of solving this issue, so some help would be highly appreciated!

  16. Andrey Vokin says:

    Juozas, could you send issue https://youtrack.jetbrains.com/newIssue?project=RUBY&clearDraft=true&c=Assignee+andrey.vokin&c=Subsystem+Docker

    Please provide idea.log. Also it would be great if it’s possible to share Dockerfile and docker-compose.yml files

  17. Pingback: RubyMine 2017.2 출시 | JetBrains 코리아

  18. Pingback: RubyMine 2017.2.3 RC: Docker Compose on Windows & More on the Debugger | RubyMine Blog

Leave a Reply

Your email address will not be published. Required fields are marked *