每次重新加载ActiveRecord模型时如何运行一段代码

时间:2012-06-28 22:03:10

标签: ruby-on-rails ruby-on-rails-3

所以我有一些代码可以重写paperclip文件路径,这样项目中的每个开发人员都可以拥有自己上传的路径,而不会互相破坏,但这是在开发中运行的

ActiveSupport.on_load(:after_initialize) do

环。这意味着它只在初始化时加载。问题是我们正在使用Active Reload gem(rails 3.1所以没关系),所以一旦有人编辑了模型,就会重新加载它并使用旧的回形针路径。

我想知道如何在每次重新加载特定模型时运行此代码?

2 个答案:

答案 0 :(得分:1)

您可以将其打包在config.to_prepare内的config/application.rb块中:

config.to_prepare do
  # your code
end

这将在开发中的每个请求上重新加载,但只在生产中重新加载一次。

答案 1 :(得分:0)

所以我上面尝试了Ryan的建议,但就像我想的那样,它会在每个页面加载时运行我的代码......没有布埃诺。

我最近做的是使用由Active Reloader提供给你的这段代码,但我怀疑它是否适用于Rails 3.2

  ActiveSupport::Notifications.subscribe("active_support.dependencies.clear") do |*args|
    my_code_block
  end

它起了作用,我仍然需要保留原来的

ActiveSupport.on_load(:after_initialize) do

阻止那里,所以它有点难看,但它有效!

如果存在更清洁的解决方案,仍然坚持。