> rvm list
rvm rubies
=* ruby-1.9.2-p290 [ i686 ]
ruby-1.9.3-p194 [ i686 ]
> rails -v
Rails 3.1.1
相关但未回答:是否有 Rails 控制台命令(Rails 3+)来重新加载更改的代码? https://stackoverflow.com/questions/6602897/is-there-a-rails-console-command-rails-3-to-reload-changed-code
我正在使用 Rails 控制台来尝试找出为什么我的模型中的方法没有被调用。该模型位于 ./app/models/product.rb 中。我正在更改一种方法,使其不再被称为self.trim_history
to trim_history
。我仍在思考何时调用方法self.do_stuff
要不就do_stuff
.
在解决这个问题的过程中我遇到了一个问题reload!
。我的理解是reload!
将再次加载所有模型和控制器,但这似乎不起作用。当我调试代码时,我更改为的行do_stuff
仍然显示为self.do_stuff
在调试器中。
我尝试用以下方法解决这个问题reload!
,没有修复。重新加载后我已经从数据库重新加载了对象,没有修复。我直接加载模型load './app/models/product.rb'
,然后从数据库加载对象,没有修复。我已经验证该对象正在被更改tail
.
在 Rails 控制台中重新加载模型的最佳方法是什么?每次模型代码更改时都必须重新启动控制台吗?有没有什么方法可以转储所有现有模型及其代码而不重新加载控制台?
Edit: 这变得奇怪了。我现在怀疑我的代码正在重新加载,但调试器没有反映新代码。当我单步执行代码时,旧代码在那里,但正在执行新代码。我通过添加一个来测试这个raise
-- the raise
从未在调试器中显示,但它被引发。瓦?
我需要对调试器做些什么才能让它看到重新加载的代码吗?这看起来像一个错误...
reload!
不会重新初始化现有对象,它只是重新加载代码。如果您创建该类的新实例,它应该反映更改。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)