Rails rails 加载 gem 和自己项目代码的顺序?

linjunhalida · 2012年02月13日 · 最后由 linjunhalida 回复于 2012年02月13日 · 3991 次阅读

我昨天发现一个问题,测试环境一切 OK, 生产环境里面 client_side_validations 有问题, 报错信息出不来, 然后我发现生产环境和开发环境产生的 html 代码不同,window.ClientSideValidations.forms 不一样。 具体原因是 initializers/client_side_validations.rb 里面 ActionView::Base.field_error_proc 被 rails_admin 覆盖了。(rails_admin/app/helpers/rails_admin/form_builder.rb)

这个和我的预期不符,按照道理,gems 应该是先被加载完毕,然后轮到 initializers 等自己项目的代码。但是实际状况不是这样,让我有点困惑,大家是否遇到过类似的状况,或者知道原理?

我生产环境是 rails 1.9.3-p0, passenger-3.0.11.

我对 gem 加载,bundle, rvm, rails, passenger 这些东西的运行机制没有了解,看来是需要好好看看了。

问题是我 gems 里面的加载顺序有问题... 刚才测试了一下,unicorn_rails 是没有这样的问题的. 去看看 passenger 的代码...

需要 登录 后方可回复, 如果你还没有账号请 注册新账号