我正在编写一个旨在从命令行运行的Ruby脚本.该脚本具有相应的RSpec文件,用于验证其功能.文件夹结构是:
./main_script.rb
./spec/main_script_spec.rb
Run Code Online (Sandbox Code Playgroud)
运行rspec spec在顶级目录按预期工作../spec/main_script_spec.rb显示文件的测试结果.每次我更改主脚本文件或spec文件时,我都希望避免手动运行.我所有的搜索结果都会出现像guard一样的东西(据我所知)都是为Rails应用程序设计的.
如何设置RSpec以监视脚本或规范更改并使用非Rails Ruby代码自动运行?
像David所说,Guard可以用来观看各种文件,并在修改这些文件时执行操作.它不必与Rails应用程序一起使用.我在过去使用过类似的东西guard.这是我做的:
将以下内容放入您的Gemfile:
source 'https://rubygems.org'
gem 'guard'
gem 'guard-shell'
gem 'rspec'
gem 'rb-fsevent', '~> 0.9'
Run Code Online (Sandbox Code Playgroud)
然后运行:
$ bundle install
使用以下命令在主目录中创建Guardfile:
$ guard init
在Guardfile,注释掉示例并添加:
guard :shell do
watch(%r{^*\.rb}) { `bundle exec rspec spec/` }
end
Run Code Online (Sandbox Code Playgroud)
这告诉guard要注意对目录中任何ruby文件的修改,并bundle exec rspec spec/在它们更改时执行命令(反引号用于在shell中执行命令).
然后在当前目录中打开一个新的终端窗口并启动guard服务器以开始观察文件:
$ bundle exec guard
现在,当您修改目录中的ruby文件时,您的Rspec测试套件应该会自动运行.