在Rails 3.1开发环境

时间:2016-09-07 19:29:00

标签: ruby-on-rails-3 module

我们目前正在使用Ruby 1.9.3,Rails 3.1(我知道,我们正努力升级所有应用程序)。

我们正在使用一个模块(让我们称之为' OurModule'添加一种方法(让我们将它称为'OurAddOnMethod'到模型在gem中定义(让我们称之为' GemModel')。我们将该模块文件存放在' config / initializers'目录中。

该文件定义模块,然后调用它将其包含在模型中:

# Include the extension 
GemModel.send(:include, OurModule)

在开发时,事情总体上运作良好,但是我们会定期得到一个错误,基本上会说“未定义的方法' OurAddOnMethod'在' GemModel'"。重新启动服务器可以解决问题(暂时)。

我假设发生这种情况是因为模型会定期重新加载,并且在开发环境中进行了更改,并且看起来初始化程序也不会在那时重新加载。看起来这可能不是最好的设置方式;处理是非常令人沮丧的。

任何人都可以通过更好的方式来启发我吗?

1 个答案:

答案 0 :(得分:0)

我最终使用包装以下代码,并将其保留在初始化器中:

ActionDispatch::Callbacks.to_prepare do
    # configure stuff or initialize
end

我感觉很糟糕,我完全错过了这个似乎完全覆盖我的问题(链接到我使用的答案):

https://stackoverflow.com/a/8636163/287516