41

I am trying to get RubyTest to work in Sublime Text 2. I followed the Instruction on the Github Readme and get the following error. Does anyone know how I could fix this?

/bin/sh: rspec: command not found
Nakilon
  • 34,866
  • 14
  • 107
  • 142
ChuckJHardy
  • 6,956
  • 6
  • 35
  • 39

12 Answers12

62

To get this to work you only need to change one setting in the RubyTest package in sb2.

If you are using rvm, your rspec gem is installed through rvm and is not found in /bin/sh

So you need to set the RubyTest package for Sublime Text 2 to automatically check for your rvm environment variables.

What to change:

1) In Sublime Text 2, go to Preferences|Browse Packages. This will open up your packages directory.

2) Open the 'RubyTest' directory and look for the file 'RubyTest.sublime-settings'.

3) find the line that says:

"check_for_rvm": false,

and change it to:

"check_for_rvm": true,

save the change.

4) That's it. It should now work.

Good Luck

iconoclast
  • 21,213
  • 15
  • 102
  • 138
sean lynch
  • 1,890
  • 1
  • 14
  • 5
  • 4
    This works perfectly and it's easier than the rest of the answers. – Hengjie Feb 05 '13 at 02:19
  • Thanks, this was a big help. – sowasred2012 Mar 31 '13 at 15:30
  • 1
    If you can't find that directory/file and you have RubyTest installed, you can also get to the preferences file here by going to Preferences -> Package settings -> RubyTest -> Settings User and adding the `"check_for_rvm": true` to the existing hash or putting inside a new one if the file is empty. – Ryan Nov 19 '14 at 00:35
43

This worked for me:

If you're using RVM, open a project with command line from the project's folder:

subl .

Then, it'll hook the ruby version and gems.

elado
  • 8,510
  • 9
  • 51
  • 60
7

This is most likely due to using RVM. What is the output of

which rspec

on your command line?

Also of note, just because you've included rspec-rails in a Gemfile, does not mean that 'rspec' is an executable program that your system knows about.

You can edit the RubyTest.sublime.settings to refer to your particular path to the rspec executable and it should work.

Unfortunately, this has the nasty side effect of being tied to one particular version of Ruby. If you're using RVM to switch between versions, you'll have to update your sublime.settings.

One work around, is to run Sublime from the command line.

Jim Wharton
  • 1,375
  • 3
  • 18
  • 41
6

Running Sublime Text 2(2165) with RubyTest plugin. Ruby and Gems managed with rbenv (0.3.0).

First attempt to use RubyTest gave the following error: /bin/sh: rspec: command not found

From the command line I ran which rspec and it returned no results.

After some digging, I read that bundle install does not put the executables in your $PATH. Alternative executable paths not picked up by shims sometimes

In order to use the executible outside the app, I had to delete the gem installed by bundler and then install it manually.

gem uninstall rspec

gem install rspec

followed by

rbenv rehash (Note you will need to run bundle inside your app so it updates the location of the gem)

This had to be performed for each version of ruby I have under rbenv control.

Now when I run

which rspec

it is found in the path and RubyTest is able to grab it without any problems.

fwiw, I had to repeat the steps for cucumber as well. To use all of RubyTests' features, ruby, cucumber and rspec executables need to be in your $PATH (for rbenv it is ~/.rbenv/shims/).

Michael Dillon
  • 1,037
  • 6
  • 16
jasonshell
  • 352
  • 6
  • 12
4

Try change the path to usr/local/bin/

I wrote a post on Sublime Text Build Scripts which should show you how to do this.

http://wesbos.com/sublime-text-build-scripts/

wesbos
  • 25,839
  • 30
  • 106
  • 143
  • This doesn't really get rubytest running and loses the best part of rubytest which is the cmd-shift-e run last test command. – Chuck Vose Feb 21 '12 at 20:44
3

I had the same problem after installing RubyTest by cloning from the repo. I simply uninstalled and reinstalled the package inside Sublime using Package Control, then everything worked fine.

Marcel Gosselin
  • 4,610
  • 2
  • 31
  • 54
Joe Chan
  • 171
  • 1
  • 7
3

Same issue for me. With rspec 1.3.2 what I just did to fix it is to edit the RubyTest.sublime.settings file in the plugin folder, changing the "ruby_rspec_exec" key from:

"ruby_rspec_exec": "rspec"

to

"ruby_rspec_exec": "spec"

It really depends on the location where you have your rspec executable file...

Pietro Di Bello
  • 492
  • 4
  • 10
2

You can see a summary of this issue here: https://github.com/maltize/sublime-text-2-ruby-tests/issues/36

Essentially, what Jim said was correct, you're running RVM or some other ruby vm manager that similarly monkeys with your PATH. Following the directions from this issue I did the following:

Install the binaries in my project

bundle install --binstubs

Add the path to my .bashrc and source it

echo 'export PATH="./bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

Open the sublime project from the command line (so that PATH is available in Sublime Text 2)

subl .
Chuck Vose
  • 4,560
  • 24
  • 31
1

The following steps worked for me (I encountered the same error as OP):

  1. Install the RubyTest plugin through the package control manager. Note* If you don't have the package manager installed - I highly recommend it for managing sublime plugins - more info here.

  2. Be sure to add the code here to your RubyTest.sublime-settings file. This file can be found at (from the menu): Preferences -> Package settings -> RubyTest -> Settings User

  3. Save file, close Sublime and restart Sublime from the terminal in your project's folder using (so PATH is available in Sublime): subl .

JJD
  • 50,076
  • 60
  • 203
  • 339
yellowaj
  • 465
  • 5
  • 10
1

No, you don't need to change paths, run sublime from command line etc. If you are using RVM, you only have to do this:

Go to Sublime Text 2, go to preferances-> package settings -> RubyTests

and pick settings-user or settings-default (depending what you are using) and change line:

"run_rspec_command": "rspec {relative_path}"

to

"run_rspec_command": "bundle exec rspec {relative_path}"

And so forth - add bundle exec to all commands

enter image description here

Aleks
  • 4,866
  • 3
  • 38
  • 69
  • I have found my own answer after some time, and now, after a year, it didn't work for me on a new machine :) the accepted answer helped http://stackoverflow.com/a/14504365/1612469 No wonder I got zero votes :) – Aleks Feb 10 '15 at 15:32
  • 1
    this one worked for me while the accepted answer didn't. upvoted! – Ricky Gu Jun 05 '16 at 04:12
1

I spent many hours struggling with this same problem! I could not get rspec to run within Sublime Text 2, using the Michael Hartl "Ruby on Rails Tutorial." It kept saying:

/bin/sh: rspec: command not found

I finally realized that the RubyTest package (https://github.com/maltize/sublime-text-2-ruby-tests) was looking in the WRONG PLACE for my RVM!

On my Mac, the path for RubyTest is /Library/Application Support/Sublime Text 2/Packages/Ruby Test

First, to make RubyTest seek the RVM, I changed the parameter in RubyTest.sublime-settings from

"check_for_rvm": false, to "check_for_rvm": true,

Then I dug into the Python code of run_ruby_test.py: https://github.com/maltize/sublime-text-2-ruby-tests/blob/master/run_ruby_test.py

At line 151, inside class BaseRubyTask, it had the wrong path for my RVM:

rvm_cmd = os.path.expanduser('~/.rvm/bin/rvm-auto-ruby')

I changed it to the full correct path: rvm_cmd = os.path.expanduser('/usr/local/rvm/bin/rvm-auto-ruby')

If this is not your path, find the correct path by typing

$ which rvm-auto-ruby and substitute that instead.

After saving run_ruby_test.py, I went to Terminal, cd to my Rails application directory, and ran spork

Finally, I opened static_pages_spec.rb in Sublime Text 2. Now all the tests work from it!

Raymond Gan
  • 4,612
  • 3
  • 24
  • 19
0

I'm using rbenv and found that adding the following to my .bashrc did the trick

/Users/user/.rbenv/shims/rspec
eebbesen
  • 5,070
  • 8
  • 48
  • 70