如何从 spork 过渡到 spring?

How to transition from spork to spring?

我目前正在使用带有 Guard、Rspec 和 Cucumber 的 Spork。我想转到 Spring,但找不到关于我需要更改的内容的任何文档。

具体来说,我很好奇是否需要更换我的:

require 'spork'

Spork.prefork do
  # ...
end

Spork.each_run do
  # ...
end

...类似:

require 'spring'

Spring.prefork do
  # ...
end

Spring.each_run do
  # ...
end

不过,我知道there isn't a Spring.prefork because the documentation says so。那么我应该简单地删除对 Spork 的引用还是需要用其他东西替换它们?

只需删除所有出现的 Spork 并安装 spring

之后 运行 bundle exec spring binstub --all.

现在如果你 运行 bin/rails c 它将使用 spring.

对于 rspec 使用 spring-commands-rspec

正如您在问题中提到的,没有 Prefork 区块。文档提供了一种解决方法:只需将现有的 Spork.prefork 块移动到初始化程序或将被拾取的任何地方,并在加载时 运行 由 Rails.

来自https://github.com/rails/spring#running-code-before-forking

There is no Spring.before_fork callback. To run something before the fork, you can place it in ~/.spring.rb or config/spring.rb or in any of the files which get run when your application initializes, such as config/application.rb, config/environments/*.rb or config/initializers/*.rb.

至于您的 Spork.each_run 块,因为您使用的是 Rspec ,您可以将其移动到 before(:suite) 块中。在 before and after hooks

上查看 Rspec 文档