gpt4 book ai didi

ruby-on-rails - 用 Spork 重新定义常量

转载 作者:行者123 更新时间:2023-12-03 17:54:15 25 4
gpt4 key购买 nike

我正在使用以下技巧(来自 http://mikbe.tk/2011/02/10/blazingly-fast-tests/ )来确保在每次使用 Spork 运行 RSpec 时重新加载模型:

Spork.each_run do
load "#{Rails.root}/config/routes.rb"
Dir["#{Rails.root}/app/**/*.rb"].each { |f| load f }
# .....
end

但是,每次运行测试时它都会导致以下警告:
/myproject/app/models/model.rb:36: warning: already initialized constant CONFIGURABLE
我可以通过放置来避免:
if !defined?(A_CONSTANT)
在每个常量之后,这看起来并不正确(但它有效)。关于如何使这项工作正常工作的任何建议? (即我的模型仍然会在测试中重新加载,但我不必在每个常量定义之后放置 if。)

最佳答案

使用“load”将导致文件被重新加载,这意味着如果该文件定义了常量,则每次加载时都会重新定义这些常量。通常首选使用“require”而不是加载,因为它通过不重新加载已加载的文件来避免此问题。

但是,显然您确实希望在测试世界中重新加载文件,因此您可以在执行加载时抑制警告:

Spork.each_run do
Kernel.silence_warnings do
load "#{Rails.root}/config/routes.rb"
Dir["#{Rails.root}/app/**/*.rb"].each { |f| load f }
# .....
end
end

关于ruby-on-rails - 用 Spork 重新定义常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13952535/

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