当前位置: 首页 > 知识库问答 >
问题:

当普通的旧Ruby(非Rails)文件更改时自动运行RSPec

芮星海
2023-03-14

我正在编写一个Ruby脚本,设计用于从命令行运行。该脚本有一个相应的RSpec文件,用于验证其功能。文件夹结构为:

./main_script.rb
./spec/main_script_spec.rb

在顶级目录中运行rspec spec可以正常工作。来自<代码>的测试结果/显示spec/main\u script\u spec.rb文件。我希望避免每次更改主脚本文件或规范文件时都手动运行此操作。我所有的搜索结果都显示了像guard这样的东西(据我所知)都是为Rails应用程序设计的。

如何设置RSpec以监视脚本或规范更改并使用非Rails Ruby代码自动运行?

共有3个答案

徐高懿
2023-03-14

我过去使用了Guard,但现在我使用了rspec焦点功能和watch命令的组合。

这很简单,只需在要运行测试的块的描述之前添加一个f。因此它将成为fdescribe或fit块。这与添加标记相同:焦点=

然后我们可以使用焦点标签过滤规格:rspec-t focus

现在,为了保持使用焦点标签运行这些规格(每0.5秒),我们使用watch命令将其称为:

watch -n 0.5 rspec -t focus

但这样输出就不会显示颜色。因此,我们需要与unbuffer一起使用。

sudo apt-get install expect

稍加定制:

watch -n 0.5 --color 'unbuffer bundle exec rspec -t focus'

由于键入这一切很烦人,我在我的〈代码〉~/上做了两个别名。bash\u别名文件(也可以使用bashrc):

alias focus="watch -n 0.5 --color 'unbuffer bundle exec rspec -t focus'"
alias focuss="bundle exec rspec -t focus"

现在我可以键入focus来保持运行,或者对于单焦点执行,我可以键入focus

盛承
2023-03-14

Guard可以用于普通的旧ruby。我通常对Guard有麻烦,所以我喜欢使用watchr,另一个宝石。只需几行代码,您就可以告诉watchr监视文件的更改,并在它们更改时运行命令。

有关纯红宝石护卫的示例,请参阅shuhari宝石。

watchr-gem更新:这个gem似乎有问题,可能是ruby版本的问题

步兴为
2023-03-14

正如David所说,Guard可以用来监视各种各样的文件,并在修改这些文件时执行操作。它不必与Rails应用程序一起使用。我在过去使用guard设置了类似的东西。以下是我所做的:

将以下内容放入您的GEM文件中:

source 'https://rubygems.org'

gem 'guard'
gem 'guard-shell'
gem 'rspec'
gem 'rb-fsevent', '~> 0.9'

然后运行:

$bundle安装

使用以下工具在主目录中创建一个Guardfile:

$guard init

Guardfile中,注释掉示例并添加以下内容:

guard :shell do
  watch(%r{^*\.rb}) { `bundle exec rspec spec/` }
end

这告诉guard监视对目录中任何ruby文件的修改,并在更改时执行命令bundle exec rspec spec(反勾号用于在shell中执行命令)。

然后在当前目录中打开一个新的终端窗口并启动一个Guard服务器以开始查看文件:

$bundle-exec-guard

现在,当您修改目录中的ruby文件时,您的Rspec测试套件应该会自动运行。

 类似资料:
  • 当某个特定的文件更新后 Puppet 就该采取一些行动,这是一个非常常见的模式。 例如,在 rsync 配置片段的例子中,一旦修改了某个片段文件,就会调用 exec 资源更新主配置文件 rsyncd.conf。 每次运行 Puppet,exec 资源都会被运行,除非指定了如下参数中的一个: creates onlyif unless refreshonly => true refreshonly

  • 我开发了一个应用程序,我想在按Enter后运行一些代码,在按Enter时代码成功运行。我想要一种方法来按Enter自动时,文本框的值改变。 但是作为事件,因为我有一个线程问题,所以如果我在键盘上按Enter,它运行得很好,但是当我写行代码()时,它不像我在键盘上按Enter,当按Enter运行方法“image()”时那样运行

  • 编程时,工作流程如下: 更改文件并保存。 编译器或解释器。 看看结果 但是也有一个工作流程是这样的:(实际上它类似于处理我正在输入的这个堆栈溢出问题窗口) 启动一个程序,监视文件目录的更改。 我在寻找第二个工作流程通常被称为什么。

  • cPanel的这个接口允许您创建和安装Ruby on Rails应用程序。 如果您开发了Ruby on Rails应用程序,则可以使用此界面将其部署到服务器。 要创建Ruby on Rails应用程序,请按照下列步骤操作 - Step 1 - 单击cPanel Home的Software Section下的Ruby on Rails。 Step 2 - 在Ruby on Rails接口中,您将找到

  • 我一直被docker困住了,没有找到任何变化。所以我在几天前发布了我的应用程序V1.0.0.0,很明显,因为这是一种预发布,我仍然有一些bug修复要做,目前我已经在V1.0.5.0了。但出于某种原因,每次部署时,它似乎都运行旧映像,而不是包含bug修复的新映像。 当我想重新部署时,我通过删除文件并将新文件放入关闭容器的文件夹来覆盖文件: ,当一切准备就绪时,我将用以下代码再次启动它们: 这将删除所

  • 问题内容: 是否有人知道可以监视一个或多个本地文件的Firefox扩展,脚本或某种其他机制。当Firefox在文件中检测到(时间戳)更改时,将自动刷新或以其他方式更新其画布。 对于编辑CSS,理想的情况是仅重新加载CSS,而不是重新渲染完整的HTML。 实际上,仅通过外部文件,它就可以通过动态HTML / CSS编辑来实现与Firebug类似的行为。 问题答案: Live.js 从网站: 怎么样?