gpt4 book ai didi

ruby - 为什么 Rails 4 不加载 Rails 3 会加载的类?

转载 作者:太空宇宙 更新时间:2023-11-03 16:01:02 24 4
gpt4 key购买 nike

在我的 test_helper.rb 文件中,出于测试目的,我覆盖了一个模型上的一种方法。我们称它为 Foo

假设我这样添加调试语句:

#in app/models/foo.rb
class Foo
puts "loading class Foo from app/models"
...
end

和:

#in test/test_hepler.rb
class Foo
puts "loading class Foo from test/test_hepler"
...
end

在 Rails 3 中,我在控制台上看到:

>loading class Foo from app/models
>loading class Foo from test/test_hepler

在 Rails 4 中,(即使使用 config.eager_load = true)我只看到:

>loading class Foo from test/test_hepler

为什么会有这种差异?另外,首选修复是什么?在我打开它进行扩展之前简单地需要'Foo'

最佳答案

如果你把 test_helper 改成 do

Foo.class_eval do
...
end

然后 rails 被强制加载您的 Foo 模型(以便它可以在其上调用 class_eval)

至于为什么测试初始化​​过程会发生变化,您将不得不通过变更日志/提交进行回溯 - 关于预加载应用代码的方式/时间肯定发生了变化。

关于ruby - 为什么 Rails 4 不加载 Rails 3 会加载的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25168800/

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