gpt4 book ai didi

ruby-on-rails - 使用 Guard 和 Spork 重新加载 RSpec 共享示例

转载 作者:数据小太阳 更新时间:2023-10-29 07:43:26 24 4
gpt4 key购买 nike

当我对它们进行更改时,如何让 spork 重新加载我的共享示例?我尝试了以下方法,但没有重新加载它们:

Spork.each_run do
Dir[Rails.root.join("spec/shared_examples/*.rb")].each {|f| require f}
end

我知道我可以在我的 Guardfile 中添加一个观察者,让它在共享示例更改时重新加载环境,但我的应用程序很大,需要大约 10-15 秒才能重新加载整个环境:

watch(/^spec\/shared_examples\/.*\.rb$/)

我宁愿让它重新加载已更改的共享示例,这样我可以获得更快的反馈循环。

最佳答案

以下是您需要检查的几件事:

在环境配置文件 test.rb 中,确保你有这个

  config.cache_classes = !(ENV['DRB'] == 'true')

如果您在 Spork 环境中,这将确保您不会缓存类。

然后,确保这些在 .each_run

FactoryGirl.reload
ActiveSupport::Dependencies.clear
ActiveRecord::Base.instantiate_observers

这应该确保您在每次运行时都重新加载类。

我还会将您的 share_examples 加载保留在 .each_run 部分。

Spork.each_run do
FactoryGirl.reload
ActiveSupport::Dependencies.clear
ActiveRecord::Base.instantiate_observers
Dir[Rails.root.join("spec/shared_examples/*.rb")].each {|f| require f}
end

您可能需要调整 .each_run 部分中 4 行的顺序,以确保一切都正确加载。

关于ruby-on-rails - 使用 Guard 和 Spork 重新加载 RSpec 共享示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10553586/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com