我昨天发现一个问题,测试环境一切 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 这些东西的运行机制没有了解,看来是需要好好看看了。