我有一个rails模块供以下参考,我已经在environment.rb文件的底部使用了“require'mode_helper'。
在开发过程中一切正常,但是当我部署到我的nginx / passenger生产环境时,我得到一个错误,即找不到我的model_helper中定义的act_as_notifiable方法。出于某种原因,在乘客开始时未加载model_helper。该文件名为model_helper.rb,位于lib文件夹中。
module ActiveRecord
module ModelHelper # module name
def self.included(base)
base.extend(ClassMethods)
end
module ClassMethods
def acts_as_notifiable
after_create :post_create
has_one :notification, :as => :about, :dependent => :destroy
end
end
def post_create
Notification.create :user => user, :about => self unless user.nil?
end
end
end
ActiveRecord::Base.send :include, ActiveRecord::ModelHelper
答案 0 :(得分:1)
据我所知,lib目录中的文件不会自动加载。 RAILS包含类路径中的lib
目录。如果需要,您必须显式加载文件。你可以这样做:
将require
添加到environment.rb
的末尾,即
require `model_helper.rb`
或强>
在config/initializers
目录中添加初始化文件,即
<强>配置/初始化/ load_model_helper.rb 强>
require `model_helper.rb`