From 7ae9f403acec6b5a6374b1b4162f26639b64d947 Mon Sep 17 00:00:00 2001 From: James Adam Date: Fri, 8 Apr 2016 12:59:04 +0100 Subject: [PATCH] Add support for chruby Based on https://github.com/maltize/sublime-text-2-ruby-tests/pull/225/files which seems to have gone away. However, `self.is_executable` returns `False` for me on the `source <...> && chruby` line, so I'm simply checking for the presence of it instead. --- README.md | 3 ++- RubyTest.sublime-settings | 1 + run_ruby_test.py | 20 +++++++++++++------- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 68db9e9..63d8383 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ Additional Features: ------------------- Below features can be enabled by editing `RubyTest.sublime-settings` -- RVM / RBENV auto detect (thx to @bronson) - feature is disabled by default, but if you enable it then be sure that your settings file is configure to use `bundle exec` (refer to https://github.com/maltize/sublime-text-2-ruby-tests#bundler-support) +- CHRUBY / RVM / RBENV auto detect (thx to @bronson) - feature is disabled by default, but if you enable it then be sure that your settings file is configure to use `bundle exec` (refer to https://github.com/maltize/sublime-text-2-ruby-tests#bundler-support) `"check_for_rbenv": true` `"check_for_rvm": true` @@ -113,6 +113,7 @@ Settings: "ruby_cucumber_folder": "features", "ruby_rspec_folder": "spec", + "check_for_chruby": false, "check_for_rbenv": false, "check_for_rvm": false, "check_for_bundler": false, diff --git a/RubyTest.sublime-settings b/RubyTest.sublime-settings index 63daf07..d598bb7 100644 --- a/RubyTest.sublime-settings +++ b/RubyTest.sublime-settings @@ -15,6 +15,7 @@ "ruby_cucumber_folder": "features", "ruby_rspec_folder": "spec", + "check_for_chruby": false, "check_for_rbenv": false, "check_for_rvm": false, "check_for_bundler": false, diff --git a/run_ruby_test.py b/run_ruby_test.py index 8f41e23..a5558db 100644 --- a/run_ruby_test.py +++ b/run_ruby_test.py @@ -136,11 +136,12 @@ def load_config(self): global TERMINAL_ENCODING; TERMINAL_ENCODING = s.get('terminal_encoding') + chruby = s.get("check_for_chruby") rbenv = s.get("check_for_rbenv") rvm = s.get("check_for_rvm") bundler = s.get("check_for_bundler") spring = s.get("check_for_spring") - if rbenv or rvm: self.rbenv_or_rvm(s, rbenv, rvm) + if chruby or rbenv or rvm: self.chruby_or_rbenv_or_rvm(s, chruby, rbenv, rvm) if spring: self.spring_support() if bundler: self.bundler_support() @@ -148,17 +149,22 @@ def spring_support(self): global COMMAND_PREFIX COMMAND_PREFIX = COMMAND_PREFIX + " spring " - def rbenv_or_rvm(self, s, rbenv, rvm): - which = os.popen('which rbenv').read().split('\n')[0] - brew = '/usr/local/bin/rbenv' + def chruby_or_rbenv_or_rvm(self, s, chruby, rbenv, rvm): + chruby_sh = os.path.expanduser('/usr/local/opt/chruby/share/chruby/chruby.sh') + + which_rbenv = os.popen('which rbenv').read().split('\n')[0] + brew_rbenv = '/usr/local/bin/rbenv' rbenv_cmd = os.path.expanduser('~/.rbenv/bin/rbenv') + rvm_cmd = os.path.expanduser('~/.rvm/bin/rvm-auto-ruby') - if os.path.isfile(brew): rbenv_cmd = brew - elif os.path.isfile(which): rbenv_cmd = which + if os.path.isfile(brew_rbenv): rbenv_cmd = brew_rbenv + elif os.path.isfile(which_rbenv): rbenv_cmd = which_rbenv global COMMAND_PREFIX - if rbenv and self.is_executable(rbenv_cmd): + if chruby and os.path.isfile(chruby_sh): + COMMAND_PREFIX = 'source ' + chruby_sh + ' && chruby `[ -f .ruby-version ] && cat .ruby-version || ruby` && ' + elif rbenv and self.is_executable(rbenv_cmd): COMMAND_PREFIX = rbenv_cmd + ' exec' elif rvm and self.is_executable(rvm_cmd): COMMAND_PREFIX = rvm_cmd + ' -S'