我在修补 ActiveJobs 的部分时遇到问题。我在 config/initializers/extensions/arguements.rb 中有以下代码
module ActiveJob
module Arguments
TYPE_WHITELIST = [ Date, DateTime, Time, NilClass, Fixnum, Float, String, TrueClass, FalseClass, Bignum ]
end
end
基本上,我正在尝试添加对日期/时间对象的基本支持,以便在 ActionMailer#deliver_later 创建的 ActiveJob 中使用
加载 rails 应用程序后,我可以看到我的白名单已加载,但是当我在邮件程序上调用 Deliver_later 方法时,原始白名单会覆盖我的补丁。
#List is correct when app loads
2.1.2 :002 > ActiveJob::Arguments::TYPE_WHITELIST
=> [Date, DateTime, Time, NilClass, Fixnum, Float, String, TrueClass, FalseClass, Bignum]
#List is overridden by default list in ActiveJobs after running #deliver_later
2.1.2 :005 > ActiveJob::Arguments::TYPE_WHITELIST
=> [NilClass, Fixnum, Float, String, TrueClass, FalseClass, Bignum]
如何使修改后的白名单保持不变?我很确定错误源于原始的 ActiveJob::Arguments 在调用 Deliver_later 之前没有加载,因此在我的补丁之后加载并覆盖它,尽管我不知道如何解决这个问题。