我正在开发 rails 应用程序,其中我使用的是 ruby 1.9.2 和 rails 3.0.8。我的应用程序在开发环境中运行良好,包括从应用程序创建表并访问它们。
但是,当我在启用缓存的生产环境中启动我的应用程序时,一切正常,我无法访问我使用我的应用程序创建的表。重新启动服务器后,我可以访问这些表,这很痛苦。
我正在寻找一种可以在创建新表时清除缓存的方法,请您帮我动态清除缓存。
感谢 Naveen Kumar Madipally
我正在开发 rails 应用程序,其中我使用的是 ruby 1.9.2 和 rails 3.0.8。我的应用程序在开发环境中运行良好,包括从应用程序创建表并访问它们。
但是,当我在启用缓存的生产环境中启动我的应用程序时,一切正常,我无法访问我使用我的应用程序创建的表。重新启动服务器后,我可以访问这些表,这很痛苦。
我正在寻找一种可以在创建新表时清除缓存的方法,请您帮我动态清除缓存。
感谢 Naveen Kumar Madipally
在ActionDispatch::Reloader中有抽象:它是在开发环境中用于重新加载类的东西。
所以基本上,你需要运行:
ActionDispatch::Reloader.cleanup!
ActionDispatch::Reloader.prepare!
不过,我不确定这是否是个好主意,因为您不能指望哪个代码(您的代码或来自 gems 的代码)会执行应该只发生一次的事情。
您不能使用STI而不是动态创建表吗?
这会降低您在生产中的表现,但您可以做的是production.rb
归档并检查吹线
config.consider_all_requests_local = true
config.action_controller.perform_caching = false
我想它会解决你的问题
一种解决方法是在您的环境/production.rb 中执行此操作(在生产环境中完全不推荐)
config.cache_classes = false