gpt4 book ai didi

ruby-on-rails - 如何在 Rails 控制台中重新加载模型?

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

> rvm list
rvm rubies

=* ruby-1.9.2-p290 [ i686 ]
ruby-1.9.3-p194 [ i686 ]

> rails -v
Rails 3.1.1

相关,但没有回答:Is there a Rails Console command (Rails 3+) to reload changed code?

我正在使用 Rails 控制台尝试弄清楚为什么我的模型中的某个方法没有被调用。该模型位于 ./app/models/product.rb 中。我正在将一个方法从被调用为 self.trim_history 更改为 trim_history。我仍在思考何时将方法调用为 self.do_stuff 或只是 do_stuff

在解决这个问题的过程中,我遇到了 reload! 的问题。我的理解是 reload! 会再次加载所有模型和 Controller ,但这似乎不起作用。当我调试我的代码时,我已更改为 do_stuff 的行在调试器中仍显示为 self.do_stuff

我试图用 reload! 来解决这个问题,但没有解决。重新加载后我从数据库中重新加载了对象,没有修复。我直接用 load './app/models/product.rb' 加载模型,然后从数据库加载对象,没有修复。我已验证该对象正在使用 tail 进行更改。

在 Rails 控制台中重新加载模型的最佳方法是什么?每次我的模型代码更改时,我都必须重新启动控制台吗?有什么方法可以在不重新加载控制台的情况下转储所有现有模型及其代码吗?

编辑:这变得更奇怪了。我现在怀疑我的代码正在重新加载,但调试器没有反射(reflect)新代码。当我单步执行代码时,旧代码在那里,但正在执行新代码。我通过添加 raise 对此进行了测试——raise 从未在调试器中显示,但它被引发了。哇?

我需要对调试器做些什么才能让它看到重新加载的代码吗?这看起来像一个错误...

最佳答案

reload! 不会重新初始化现有对象,它只是重新加载代码。如果您创建该类的新实例,它应该反射(reflect)更改。

关于ruby-on-rails - 如何在 Rails 控制台中重新加载模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10465183/

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