我使用自定义 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
该目录下有几个 Rails 应用程序,例如 /vagrant/rails_app_1、/vagrant/rails_app_2
该命令的工作原理是从 relative_file 变量中提取完整的文件夹路径,并bundle exec rspec
在文件名上远程执行。
如果您使用直接在 /vagrant 中的 rails 应用程序进行了更简单的设置,那么您应该能够摆脱类似以下的情况:
{
"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 应用程序,则必须为每个配置更改此设置。