如何在rails控制台中重新加载模型?

jco*_*lum 7 ruby ruby-on-rails ruby-on-rails-3

> rvm list
rvm rubies

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

> rails -v
Rails 3.1.1
Run Code Online (Sandbox Code Playgroud)

相关,但没有回答:是否有Rails控制台命令(Rails 3+)重新加载更改的代码?

我正在使用Rails控制台尝试找出为什么我的模型中的方法没有被调用.该模型位于./app/models/product.rb中.我被称为改变方法self.trim_historytrim_history.我还在缠着我的头来调用方法self.do_stuff或者只是do_stuff.

在弄清楚这个问题的过程中,我遇到了一个问题reload!.我的理解是,它reload!会再次加载所有模型和控制器,但这似乎不起作用.当我调试我的代码时,我改变的行do_stuff仍然显示self.do_stuff在调试器中.

我试图解决这个问题reload!,没有解决办法.重新加载后我从数据库重新加载了对象,没有修复.我已直接加载模型load './app/models/product.rb',然后从db加载对象,没有修复.我已经验证了该对象正在被更改tail.

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

编辑:这个变得陌生.我现在怀疑我的代码正在重新加载,但调试器没有反映新代码.当我单步执行代码时,旧代码就在那里,但新代码正在执行.我通过在调试器中添加一个raise- raisenever show来测试它,但它被引发了.笏?

我是否需要使用调试器来查看重新加载的代码?这看起来像个bug ...

Chr*_*itz 17

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