2015-06-26 16 views
0

我對Ruby知之甚少,但繼承了最近開始有問題的Ruby應用程序。對於零的Ruby代碼崩潰與ExceptionNoMethodError undefined方法:NilClass

有一個基於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來自應用程序/模型/ trip.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 

這目標是一個位置的參考。 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 

我知道,沒有太多去 - 但什麼原因導致那種錯誤的,等等任何線索或想法...

+1

看起來像數據問題。 'trip.master_destination'返回零。 – infused

回答

1

爲master_destination您的記錄至少一個返回null。
我會在master_destination中添加一個調試語句,它只輸出當前正在處理的行程。
當它崩潰時,就在崩潰之前,你會看到什麼旅程有問題。

相關問題