カスタム RubyTest コマンドで成功しました。そのコマンドの作成は個々のセットアップに依存しますが、私の構成は次のようになります。
{
"ignored_directories": [ ".git", "tmp" ],
"run_rspec_command": "cd $DIR_WITH_VAGRANTFILE && vagrant ssh --command \"cd /vagrant/`echo {relative_path} | sed 's/\\/spec.*$//'` && bundle exec rspec `echo {relative_path} | sed 's,^[^/]*.*/spec,spec,'`\"",
"run_single_rspec_command": "cd DIR_WITH_VAGRANTFILE && vagrant ssh --command \"cd /vagrant/`echo {relative_path} | sed 's/\\/spec.*$//'` && bundle exec rspec `echo {relative_path} | sed 's,^[^/]*.*/spec,spec,'` -l{line_number}\"",
}
これらのコマンドは、いくつかの仮定を行います。
$DIR_WITH_VAGRANTFILE
Vagrantfile を含むディレクトリへのパスを持つ、という環境変数があります。
そのディレクトリは、VM の /vagrant にマウントされます
/vagrant/rails_app_1、/vagrant/rails_app_2 など、そのディレクトリの下にいくつかの Rails アプリがあります。
このコマンドは、relative_file 変数から完全なフォルダー パスを抽出bundle exec rspec
し、ファイル名に対してリモートで実行することによって機能します。
Rails アプリを /vagrant 内に直接配置して、より単純なセットアップを行う場合は、次のような方法で問題を解決できるはずです。
{
"ignored_directories": [ ".git", "tmp" ],
"run_rspec_command": "cd $DIR_WITH_VAGRANTFILE && vagrant ssh --command \"cd /vagrant && bundle exec rspec {relative_path}\"",
"run_single_rspec_command": "cd DIR_WITH_VAGRANTFILE && vagrant ssh --command \"cd /vagrant && bundle exec rspec {relative_path} -l{line_number}\"",
}
注: 異なるセットアップと異なる場所に複数の Rails アプリがある場合は、構成ごとにこのセットアップを変更する必要があります。