切换到Rails 3后,我注意到我必须重新启动服务器才能使每个请求重新加载STI模型类。例如,假设我有这个:
# app/models/vehicle.rb
class Vehicle < ActiveRecord::Base
end
# app/models/car.rb
class Car < Vehicle
end
如果我对Vehicle
进行了更改,则会在下一个请求中加载更改。但是如果我对Car
进行了更改,我必须重新启动服务器才能加载它。
有关解决这个问题的任何想法吗?
我正在运行WEBrick,但我没有承诺。
答案 0 :(得分:2)
我们发现我们需要zetetic的解决方案和一些额外的代码来完成这项工作(至少在Rails 3.0.9中)。对于上述问题,解决方案看起来像:
在config / environments / development.rb中:
config.after_initialize do
["vehicle"].each do|dep|
require_dependency( (Rails.root + "app/models/#{dep}").to_s )
end
end
在app / controllers / application_controller.rb中:
class ApplicationController < ActionController::Base
if Rails.env == 'development'
require_dependency( (Rails.root + "app/models/vehicle").to_s )
end
...
development.rb中的代码处理类的初始加载,ApplicationController中的代码处理后续请求。
答案 1 :(得分:1)
我相信这可以通过在控制器中添加require_dependency 'vehicle'
来解决。
答案 2 :(得分:0)
使用rails 3.0.3和3号乘客,我根本看不到这一点。如果将您的应用更新到3.0.3无法修复它,我将离开WEBrick。
我个人建议使用WEBrick以外的东西。乘客一直是我开发+生产的首选服务器。