【发布时间】:2012-08-29 20:28:27
【问题描述】:
我们有一个 Rails 应用程序,其中 after_create 从初始化程序动态添加到 ActiveRecord 模型。
我们已经尝试了 instance_eval
Foo.instance_eval do
send "after_create", lambda{|r| r.some_method}
end
和class_eval
Foo.class_eval do
after_create lambda{|r| r.some_method}
end
在创建它们之后运行Foo.new._create_callbacks 时,它会返回两个回调。
向 Rails 服务器发出请求后,两个回调消失。
这个问题只发生在开发中。暂存和制作工作正常。
在development.rb 中设置config.cache_classes = true 时,回调将持续存在并且不会消失。
我们已经在其他应用程序中复制了这段代码,它工作正常,所以可能是配置问题。
注意:我们正在使用带有 lvh.me
的子域- Rails 3.1.1
- Ruby 1.9.2-p180
谢谢:)
【问题讨论】:
-
有道理:由于在开发模式下重新加载类,回调链会在每个请求上重新创建
-
但为什么在其他应用程序中运行良好?
-
是的,在 Rails 3.1.1 和 1.9.x 中都有
-
所有
cache_classes设置为false? -
是的,同样的
development.rb:(
标签: ruby-on-rails ruby activerecord