Ответ 1
Возвышенный плагин пытается запустить команду rspec
с помощью оболочки /bin/sh
. Однако команда не найдена, потому что RVM не загружается в среду оболочки.
Таким образом, папка, в которой находится ваш исполняемый файл rspec
, находится не в пути поиска оболочки (переменная среды PATH
). RVM устанавливает любые исполняемые команды, которые поставляются с драгоценными камнями, например: "/home/your-user/.rvm/gems/[email protected]/bin/
" (фактический путь зависит от вашего gemset, рубиновой версии и где ваша ОС хранит пользовательские домашние каталоги)
Простое решение
Как уже упоминалось здесь... вы можете обнаружить, что просто выполнение возвышенного из среды оболочки, содержащей RVM (т.е. каталог вашего проекта), может решить проблему PATH
, Однако для этого требуется, чтобы вы каждый раз выполняли свой текстовый редактор из командной строки и сохраняли среду оболочки.
cd ~/src/my-ruby-project
subl .
После долгих экспериментов я нашел способ заставить плагин RubyTest выполнить rspec
с правильной средой, управляемой RVM (с поддержкой пакета).
Поддержка Bundler
Здесь содержимое моего файла ~/.config/sublime-text-2/Packages/RubyTest/RubyTest.sublime-settings
:
{
"erb_verify_command": "~/.rvm/bin/rvm-auto-ruby $(~/.rvm/bin/rvm gemdir | sed -e 's/@.*//' -e 's/$/@global/' )/bin/bundle exec erb -xT - {file_name} | ~/.rvm/bin/rvm-auto-ruby -c",
"ruby_verify_command": "~/.rvm/bin/rvm-auto-ruby -c {file_name}",
"run_ruby_unit_command": "~/.rvm/bin/rvm-auto-ruby -Itest {relative_path}",
"run_single_ruby_unit_command": "~/.rvm/bin/rvm-auto-ruby -Itest {relative_path} -n '{test_name}'",
"run_cucumber_command": "~/.rvm/bin/rvm-auto-ruby $(~/.rvm/bin/rvm gemdir | sed -e 's/@.*//' -e 's/$/@global/' )/bin/bundle exec cucumber {relative_path}",
"run_single_cucumber_command": "~/.rvm/bin/rvm-auto-ruby $(~/.rvm/bin/rvm gemdir | sed -e 's/@.*//' -e 's/$/@global/' )/bin/bundle exec cucumber {relative_path} -l{line_number}",
"run_rspec_command": "~/.rvm/bin/rvm-auto-ruby $(~/.rvm/bin/rvm gemdir | sed -e 's/@.*//' -e 's/$/@global/' )/bin/bundle exec rspec {relative_path}",
"run_single_rspec_command": "~/.rvm/bin/rvm-auto-ruby $(~/.rvm/bin/rvm gemdir | sed -e 's/@.*//' -e 's/$/@global/' )/bin/bundle exec rspec {relative_path} -l{line_number}",
"ruby_unit_folder": "test",
"ruby_cucumber_folder": "features",
"ruby_rspec_folder": "spec",
"ruby_use_scratch" : false,
"save_on_run": false,
"ignored_directories": [".git", "vendor", "tmp"],
"hide_panel": false,
"before_callback": "",
"after_callback": ""
}
Это должно работать до тех пор, пока у вас есть комплектщик в вашем глобальном наборе gemset и RVM установлен в ваш домашний каталог (при необходимости отрегулируйте пути, если ~/.rvm
не оценивает правильно, или если bundler
или rvm-auto-ruby
расположенный где-то в другом месте).
Если вы используете gemsets, вы также должны добавить в свой проект .rvmrc
строку следующего вида:
rvm use [email protected]_project_gemset_name
Без поддержки Bundler
Предположим, что у вас cucumber
и rspec
установлены в @global gemset вашего текущего ruby:
{
"erb_verify_command": "~/.rvm/bin/rvm-exec $(~/.rvm/bin/rvm current) 1>/dev/null erb -xT - {file_name} | ~/.rvm/bin/rvm-auto-ruby -c",
"ruby_verify_command": "~/.rvm/bin/rvm-auto-ruby -c {file_name}",
"run_ruby_unit_command": "~/.rvm/bin/rvm-auto-ruby -Itest {relative_path}",
"run_single_ruby_unit_command": "~/.rvm/bin/rvm-auto-ruby -Itest {relative_path} -n '{test_name}'",
"run_cucumber_command": "~/.rvm/bin/rvm-auto-ruby $(~/.rvm/bin/rvm gemdir | sed -e 's/@.*//' -e 's/$/@global/' )/bin/cucumber {relative_path}",
"run_single_cucumber_command": "~/.rvm/bin/rvm-auto-ruby $(~/.rvm/bin/rvm gemdir | sed -e 's/@.*//' -e 's/$/@global/' )/bin/cucumber {relative_path} -l{line_number}",
"run_rspec_command": "~/.rvm/bin/rvm-auto-ruby $(~/.rvm/bin/rvm gemdir | sed -e 's/@.*//' -e 's/$/@global/' )/bin/rspec {relative_path}",
"run_single_rspec_command": "~/.rvm/bin/rvm-auto-ruby $(~/.rvm/bin/rvm gemdir | sed -e 's/@.*//' -e 's/$/@global/' )/bin/rspec {relative_path} -l{line_number}",
"ruby_unit_folder": "test",
"ruby_cucumber_folder": "features",
"ruby_rspec_folder": "spec",
"ruby_use_scratch" : false,
"save_on_run": false,
"ignored_directories": [".git", "vendor", "tmp"],
"hide_panel": false,
"before_callback": "",
"after_callback": ""
}