Ruby代码因未定义nil:NilClass方法的ExceptionNoMethodError而崩溃



我对Ruby知之甚少,但继承了一个最近开始出现问题的Ruby应用程序。

有一个基于Resque的作业定期运行,几个月来一直运行良好,直到现在它突然停止了工作。我验证了代码没有更改,因此认为这可能是一个与数据相关的问题。

它运行了大约一分钟,然后在Resque中显示为错误。

Retried just now 
Remove
ClassProcessor::ReportRunnerArguments
ExceptionNoMethodErrorErrorundefined method `nass_code' for nil:NilClass 
/var/www/applications/usps/app/models/report.rb:58:in `build_node'
/var/www/applications/usps/lib/processor/processor/reporter.rb:9:in `block in prep'
/usr/local/rvm/gems/ruby1.9.3p448/gems/activerecord3.2.8/lib/active_record/relation/delegation.rb:6:in `each'
/usr/local/rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.8/lib/active_record/relation/delegation.rb:6:in `each'
/var/www/applications/usps/lib/processor/processor/reporter.rb:8:in `prep'
/var/www/applications/usps/lib/processor/processor/reporter.rb:15:in `execute'
/var/www/applications/usps/app/models/owner.rb:33:in `gone'
/var/www/applications/usps/lib/processor/processor/report_runner.rb:5:in `perform'

有问题的代码行是:

<tran:NassCode>"+self.trip.master_destination.nass_code+"</tran:NassCode>

master_destination来自app/models/strip.rb:

class Trip < ActiveRecord::Base
belongs_to :contract
belongs_to :origin, :class_name => 'Location'
belongs_to :destination, :class_name => 'Location'
belongs_to :frequency
...
def master_destination
   return master_trip_end.destination
end

该Destination是对Location.rb的引用,该错误中引用了"nass_code"。

class Location < ActiveRecord::Base
  belongs_to :owner
  has_one :address, :as => :owner, :dependent => :destroy
  attr_accessible :name, :nass_code, :radius, :address_attributes

我知道这没什么好说的,但关于是什么导致了这种错误的任何线索或想法,等等…

至少有一条记录的master_destination返回null
我会在master_destination中添加一个调试语句,它只输出您当前正在处理的行程
当它崩溃时,就在崩溃之前,你会看到什么旅程有问题。

相关内容

最新更新